计算几何与计算机图形学方面的一些资源及源代码http://www.justdone.cn/index.php/uid-2-action-viewspace-itemid-72

来源:互联网 发布:js断点 编辑:程序博客网 时间:2024/04/30 22:39

计算几何与计算机图形学方面的一些资源及源代码

上一篇 / 下一篇  2007-09-25 19:25:28 / 个人分类:虚拟现实

查看( 9 ) / 评论( 0 ) / 评分( 0 / 0 )
This page lists "small" pieces of geometric software available on the Internet. Most of the software is available free of charge. Unless otherwise specified, C or C++ source code is available for all programs. Software libraries and collections and programs that can be run interactively over the web are listed on separate web pages.

Caveat Surfor! I can't make any claims about the usefulness or quality of the programs listed here. I don't have the time or equipment to try them all. If you have experience with any of these programs, either positive or negative, please tell me about it.

The programs on this page are divided into several categories, some of which are divided into further sub-categories. (Eventually, each category will get its own separate web page.) Each program is listed only once, but I've provided cross-links between overlapping categories, and I've tried to arrange similar categories near each other.

  • Robust low-level primitives
  • Combinatorics and discrete math
  • Geometric optimization
  • Convex hulls and convex polyhedra
  • Voronoi diagrams and Delaunay triangulations
  • Operations on polygons
  • Mesh generation and manipulation
  • Geometric modeling
  • Visibility computation
  • Visualization tools
  • Other
Each category also includes links to relevant pages in Nina Amenta's comprehensive Directory of Computational Geometry Software, which I strongly encourage you to visit!

Items marked [NEW!] have been recently added or modified.


Robust low-level primitives

Avoid roundoff and precision errors! Use this code instead of naïve floating point or integer arithmetic.
  • Relevant pages from DCGS:
    • Numerical and algebraic computation

     

  • Ken Clarkson's Hull contains code to compute signs of determinants. See this paper for a description of his algorithms.

     

  • Sylvain Pion's Modular package, based on the algorithms in "Modular Arithmetic for Geometric Predicates" by Hervé Brönnimann, Ioannis Z. Emiris, Victor Pan and Sylvain Pion.

     

  • Adaptive precision floating point predicates used in Jonathan Shewchuk's Triangle package.

     

  • Libraries for affine arithmetic and interval arithmetic (the first requires the second) from Jorge Stolfi's software collection

     

  • Several algorithms to compute the exact sign of a deteminant (also here), collected by Mariette Yvinec. Part of the PRISME project at INRIA Sophia-Antipolis.

     

  • The LEDA libraries includes code for exact arbitrary-precision integer, rational, floating point, and "real" arithmetic.

Combinatorics and discrete math

  • LINK: A Software System for Discrete Mathematics under development at DIMACS

     

  • Ulli Hund's program om2ps for visualizing oriented matroids as arrangements of pseudospheres. Sample output is available.

     

  • Jorjeta Jetcheva's program to draw "clusters of stars", using an algorithm of Ileana Strienu (requires LEDA)

     

  • Komei Fukuda's Reverse Search mathematica package for enumerating triangulations and connected induced subgraphs. Requires Steve Skiena's Combinatorica package.

     


Geometric optimization

  • Relevant pages from DCGS:
    • Linear programming, smallest enclosing ball and center point

     

  • Code by Ken Clarkson:
    • Fixed-dimensional linear programming
    • Approximate center points

     

  • From Graphics Utilities by David Eberly:
    • Minimum enclosing circle
    • Minimum enclosing sphere (3d only)

     

  • Mike Hohmeyer's implementation of Seidel's linear programming algorithm, courtesy of Seth Teller

     

  • ANN: Library for Approximate Nearest Neighbor Searching, by David Mount and Sunil Arya

     

  • Dave White's smallest enclosing ball software

Convex hulls and convex polyhedra

Most convex hull programs will also compute Voronoi diagrams and Delaunay triangulations. (Actually, all of them do, if you look at them the right way.)

Relevant pages from DCGS:

  • Arbitrary dimensional convex hull, Voronoi diagram, Delaunay triangulation
  • Low dimensional convex hull, Voronoi diagram and Delaunay triangulation

Low-dimensional convex hulls

  • Two-dimensional convex hulls by Ken Clarkson

     

  • From Graphics Utilities by David Eberly:
    • 2d convex hulls: conhull2.h, conhull2.c
    • 3d convex hulls: conhull3.h, conhull3.c

     

  • ZRAM, a library of parallel search algorithms and data structures by Ambros Marzetta and others, includes a parallel implementation of Avis and Fukuda's reverse search algorithm.

     

  • Geometric software by Darcy Quesnel:
    • Randomized parallel 3D convex hull, with documentation
    • 2D Delaunay triangulation, Voronoi diagram, and convex hull (requires LEDA)

     

  • Harald Rosenberger's implementation of the beneath-beyond method for 3- and 4-dimensional convex hulls, courtesy of Ernst Mücke's GeomDir.

Arbitrary-dimensional convex hulls

  • lrs 3.1: the first "official" distribution of David Avis' implementation of Avis and Fukuda's reverse search algorithm for vertex/facet enumeration. (This is an updated version of an earlier preliminary implementation.) An extensive user's guide is included.

     

  • Qhull by Brad Barber, David Dobkin, and Hannu Huhdanpaa
    • Also available from this mirror site in Spain
    • The latest version (2.5) was released February 4, 1998.

     

  • Primal-dual methods for vertex and facet enumeration by David Bremner, Komei Fukuda, and Ambros Marzetta

     

  • Hull: Arbitrary-dimensional convex hulls, Voronoi diagrams, Delaunay triangulations, and alpha shapes, by Ken Clarkson

     

  • PORTA, a collection of tools for analyzing polytopes and polyhedra, by Thomas Christof and Andreas Loebel, featured in Günter Ziegler's Lectures on Polytopes.

     

  • Computational geometry software by Ioannis Emiris: perturbed convex hulls in arbitrary dimensions, exact convex hulls in two and three dimensions, mixed volume in arbitrary dimensions, and mixed subdivisions in the plane.

     

  • Polytope software by Komei Fukuda
    • cdd and cdd+: arbitrary-dimensional convex hulls using Motzkin's double description method
    • A Mathematica package for Vertex enumeration of polytopes and arrangements

     

  • Kurt Mehlhorn's programs for generating higher dimensional convex hulls and Delaunay triangulations and checking geometric structures. (C++WEB output only)

Measure properties

  • Vinci (also here): a program for computing volumes of convex polytopes, presented as either the convex hull of a set of points, the intersection of a set of halfspaces, or both (with the vertex-facet incidence graph). Extensive online documentation and sample polytope files are available. Written by Benno Büeler, Andreas Enge, and Komei Fukuda.

     

  • Ehrhart, a program to count integer points in convex polyhedra and compute Ehrhart polynomials, by Philippe Claus, Vincent Loechner, and Doran Wilde.

     

  • Fast and accurate computation of polyhedral mass properties by Brian Mirtich, published in journal of graphics tools 1.2:31-50 (1996)

Boolean operations on polyhedra

     

  • Polymake, a general-purpose polytope and polyhedron manipulation tool by Ewgenij Gawrilow and Michael Joswig Requires either cdd+, lrs, or porta for some computations and geomview for visualization. [C++ and Perl]

     

  • Polylib, a library of polyhedral functions by Doran Wilde, includes code to compute convex hulls and perform boolean operations on unions of polytopes in any dimension.

Interesting and/or pathological polytope data

  • Examples of pathological polytopes collected by David Bremner. See "How Good are Convex Hull Algorithms?" by Avis, Bremner, and Seidel for details. (data only)

     

  • A collection of polytopes, mostly due to Günther Ziegler, from the polymake web site. (data only)

Miscellaneous

  • A Mathematica package for unfolding 3D polytopes ( README) by Komei Fukuda; see "Strange Unfoldings of Convex Polytopes" for details.

     

  • PUNTOS, a Maple package for computing triangulations of polytopes, regular triangulations of point sets, and their underlying oriented matroids, by Jesús de Loera

     

  • Convex polyhedron code from a collection of mathematical programming software at the Konrad-Zuse-Zentrum für Informationstechnik, Berlin.

Voronoi diagrams and Delaunay triangulations

See also the implementation page from Christopher Gold's site www.Voronoi.com.

Relevant pages from DCGS:

  • Arbitrary dimensional convex hull, Voronoi diagram, Delaunay triangulation
  • Low dimensional convex hull, Voronoi diagram and Delaunay triangulation
  • Medial axis and constrained Delaunay triangulation

Voronoi diagrams and Delaunay triangulations of points

Many convex hull programs can also compute Voronoi diagrams and Delaunay triangulations.
  • 2d and 3d Delaunay triangulations by Jean-Daniel Boissonnat, Olivier Devillers, Stefan Meiser, and Monique Teillaud, from the PRISME project at INRIA Sophia-Antipolis.

     

  • The Delaunay hieararchy, a data structure for 2d Delaunay triangulations that supports dynamic insertions (and deletions, but those aren't implemented), by Olivier Devillers, from the PRISME project at INRIA Sophia-Antipolis. (Solaris and SGI executables only)

     

  • Graphics utilities by David Eberly:
    • 2d Delaunay triangulations: delaun2.c
    • 3d Delaunay triangulations: delaun3.c

     

  • GAMBINI: a program for constructing multiplicatively weighted Voronoi diagrams for points in the plane, by Barry Boots. (Windows 3.1/95/NT executable only)

     

  • Ernst Mücke's Detri, from his GeomDir, robustly computes 3D Delaunay triangulations.

     

  • A simple divide-and-conquer Delaunay triangulation algorithm from Jorge Stolfi's software collection. Requires Stolfi's quad edge data structure library.

     

  • Software by John Sullivan includes code to compute either standard Voronoi diagrams in Euclidean 3-space or periodic Voronoi diagrams in the 3-torus.

     

  • Dave Watson's incremental convex hull/Delaunay triangulation program nnsort.c and a description of the algorithm

     

  • Roman Waupotitsch's MinMaxer generates Delaunay, regular, and various other triangulations of two-dimensional point sets.

     

  • Software on the Web, from the CNR-Pisa Visual Computing Group, includes code for 3D Delaunay triangulations

Constrained Delaunay triangulations

See also mesh generation and manipulation.
  • Super Delaunay, a commercial fully dynamic constrained Delaunay triangulation package from David Kornmann (description only). Interactive demo versions for Sun Solaris and Linux are available here (binaries and data only). Demo versions for other architectures are available from the author.

     

  • Dani Lischinski's incremental constrained