![]() |
(Meditations at the Edge: Paper & Spirit,
Peter and Donna Thomas.)
Jonathan's papers
Most recent:
Greatest personal satisfaction: |
Also available is a set of full-page figures from the paper, which may be printed on transparencies for classroom use.
“I hate meshes. I cannot believe how hard this is. Geometry is hard.”
— David Baraff, Senior Research Scientist, Pixar Animation Studios
The following papers include theoretical treatments of Delaunay refinement
and discussions of the implementation details of
my two-dimensional mesh generator and Delaunay triangulator, Triangle,
and my three-dimensional mesh generator and Delaunay tetrahedralizer,
Pyramid.
See the
Triangle page for information about what Triangle can do,
or to obtain the C source code.
François Labelle and Jonathan Richard Shewchuk,
Anisotropic Voronoi Diagrams and
Guaranteed-Quality Anisotropic Mesh Generation,
Proceedings of the Nineteenth Annual Symposium on
Computational Geometry (San Diego, California), pages 191-200,
Association for Computing Machinery, June 2003.
PostScript (910k, 10 pages),
PDF (284k, 10 pages).
The best triangulations for interpolation and numerical modeling
are often anisotropic: long and skinny, oriented in directions
dictated by the function being approximated.
(See my “What Is a Good Linear Element?” papers below for details.)
The ideal orientations and aspect ratios of the elements may vary
greatly from one position to another.
This paper discusses a Voronoi refinement algorithm for
provably good anisotropic mesh generation.
The skewed elements are generated with the help of
anisotropic Voronoi diagrams,
wherein each site has its own distorted distance metric.
Anisotropic Voronoi diagrams are somewhat badly behaved,
and do not always dualize to triangulations.
We call it “Voronoi refinement” because the diagrams
can be tamed by inserting new sites.
After they are carefully refined, they dualize to guaranteed-quality
anisotropic triangular meshes.
Mesh Generation for Domains with Small Angles,
Proceedings of the Sixteenth Annual Symposium on
Computational Geometry (Hong Kong), pages 1-10,
Association for Computing Machinery, June 2000.
PostScript (663k, 10 pages),
PDF (237k, 10 pages).
How to adapt Delaunay refinement algorithms to domains that are difficult
to mesh because they have small angles.
The two-dimensional portion of this paper is superseded by the
improved writing in “Delaunay Refinement Algorithms for Triangular Mesh
Generation,” above.
The three-dimensional portion is still found only here.
Star Splaying: An Algorithm for Repairing
Delaunay Triangulations and Convex Hulls,
Proceedings of the Twenty-First Annual Symposium on
Computational Geometry (Pisa, Italy), pages 237-246,
Association for Computing Machinery, June 2005.
PostScript (392k, 10 pages),
PDF (209k, 10 pages).
Star splaying is a general-dimensional algorithm for
fixing broken Delaunay triangulations and convex hulls.
Its input is a triangulation, an approximate convex hull,
or even just a set of vertices and guesses about who their neighbors are.
If the input is “nearly Delaunay” or “nearly convex,”
star splaying is quite fast,
so I call it a “Delaunay repair” algorithm.
Star splaying is designed for dynamic mesh generation,
to repair the quality of a finite element mesh
that has lost the Delaunay property after its vertices have moved
in response to simulated physical forces.
Star splaying is akin to Lawson's edge flip algorithm for converting
a two-dimensional triangulation to a Delaunay triangulation,
but it works in any dimensionality.
Nuttapong Chentanez, Bryan Feldman, François Labelle,
James O'Brien, and Jonathan Richard Shewchuk,
Liquid Simulation on Lattice-Based Tetrahedral Meshes,
2007 Symposium on Computer Animation (San Diego, California),
pages 219-228, August 2007.
PDF (color, 4,782k, 10 pages).
Here, we use isosurface stuffing (above) as part of an algorithm for
simulating liquids with free surfaces.
The graded meshes allow us to maintain fine detail on the liquid surface
without excessive computational cost in the interior.
The rendered surface is represented as a separate surface triangulation,
at an even finer detail than the surface of the tetrahedral mesh.
We exploit the regularity of the meshes for fast point location,
needed for semi-Lagrangian advection of the velocities and the surface itself.
We also introduce a thickening strategy to prevent the liquid from
breaking up into sheets or droplets so thin that they disappear,
falling below the finest resolution of the mesh.
Bryan Matthew Klingner and Jonathan Richard Shewchuk,
Aggressive Tetrahedral Mesh Improvement,
Proceedings of the 16th International Meshing Roundtable (Seattle, Washington),
pages 3-23, October 2007.
PDF (color, 26,567k, 18 pages).
Mesh clean-up software takes an existing mesh and improves the
quality of its elements by way of operations such as smoothing
(moving vertices to better locations) and topological transformations
(replacing a small set of tetrahedra with better ones).
Here, we demonstrate algorithms and software that so aggressively improve
tetrahedral meshes that we obtain quality substantially better than that
produced by any previous method for tetrahedral mesh generation or
mesh improvement.
Our main innovation is to augment the best traditional clean-up methods
(including some from the paper below) with topological transformations
and combinatorial optimization algorithms that insert new vertices.
Our software often improves a mesh so that all its dihedral angles are
between 30o and 130o.
Two Discrete Optimization Algorithms for the
Topological Improvement of Tetrahedral Meshes,
unpublished manuscript, 2002.
PostScript (295k, 11 pages),
PDF (168k, 11 pages).
This tutorial studies two local topological transformations for
improving tetrahedral meshes: edge removal and
multi-face removal.
Given a selected edge, edge removal deletes all the tetrahedra
that contain the edge, and replaces them with other tetrahedra.
I work out in detail (and attempt to popularize)
an algorithm of Klincsek for finding the optimal set of new tetrahedra.
The multi-face removal operation is the inverse of the edge removal operation.
I give a new algorithm for finding the optimal multi-face removal operation
that involves a selected face of the tetrahedralization.
These algorithms are part of our tetrahedral mesh improvement software
described in the paper above.
Martin Isenburg, Yuanxin Liu, Jonathan Shewchuk, Jack Snoeyink, and
Tim Thirion,
Generating Raster DEM from Mass Points via TIN Streaming,
Proceedings of the Fourth International Conference on
Geographic Information Science
(GIScience 2006, Münster, Germany), September 2006.
PostScript (color, 16,554k, 13 pages).
PDF (color, 490k, 13 pages).
Martin Isenburg, Peter Lindstrom, Stefan Gumhold, and Jonathan Shewchuk,
Streaming Compression of Tetrahedral Volume Meshes,
Proceedings: Graphics Interface 2006 (Quebec City, Quebec, Canada),
pages 115-121, June 2006.
PDF (color, 3,821k, 7 pages).
Suppose you want to tetrahedralize a three-dimensional domain. The result implies that if you insert enough extra vertices on the boundary of a facet to recover its edges in a Delaunay tetrahedralization (in other words, if you make it be ridge-protected) then you can recover the facet's interior for free—that is, you can force the triangular faces of the tetrahedralization to conform to the facet without inserting yet more vertices. This method of facet recovery is immediately useful for mesh generation or the interpolation of discontinuous functions. (The result also fills a theoretical hole in my dissertation by showing that it is safe to delete a vertex from a constrained Delaunay tetrahedralization in the circumstances where my “diametral lens” algorithm does so.)
I provide two algorithms for constructing constrained Delaunay triangulations that are fast enough to be useful in practice. One is based on bistellar flips (which swap a few tetrahedra for a few others), and one is a sweep algorithm. The flip algorithm is easier to implement, and is probably usually faster in practice. However, the sweep algorithm works on almost every input that has a CDT, whereas the flip algorithm works only on ridge-protected inputs. The question of which algorithm is asymptotically faster is tricky—the answer depends on the size of the output, and is different for a worst-case input than for a random input; see the flip algorithm paper for details. See the “Strange Complexity” paper to find out why the sweep algorithm doesn't work on every input that has a CDT.
By starting with a Delaunay (or regular) triangulation and
incrementally inserting facets one by one,
you can construct the constrained Delaunay
(or constrained regular) triangulation of a ridge-protected input in
O(nv
General-Dimensional Constrained Delaunay and
Constrained Regular Triangulations, I: Combinatorial Properties.
Discrete & Computational Geometry 39(1-3):580-637, March 2008.
PostScript (865k, 54 pages),
PDF (447k, 54 pages).
This manuscript lays down the combinatorial foundations of CDTs and
weighted CDTs.
It begins by proving that many properties of Delaunay triangulations
(of any dimension)
generalize to constrained Delaunay triangulations—in particular,
the Delaunay Lemma, which states that a triangulation is a weighted CDT
if and only if every (d-1)-dimensional face is either
“locally regular” (locally convex on the lifting map) or
a constraining face.
Next, the manuscript shows that (weighted) CDTs have several optimality
properties when used for piecewise linear interpolation.
It culminates with the proof that if an input is weakly ridge-protected
(a less restrictive condition than ridge-protected), it has a CDT.
This proof also applies to weighted CDTs.
This paper is the ideal starting point for researchers
who want to work with CDTs of dimension higher than two,
and it is the foundation of the correctness proofs of my CDT construction
algorithms.
For those who don't want to read the proofs,
the introduction summarizes the results and how to use them.
Aimed at computational geometers.
Discusses the general-dimensional case.
A Condition Guaranteeing the Existence of
Higher-Dimensional Constrained Delaunay Triangulations,
Proceedings of the Fourteenth Annual Symposium on
Computational Geometry (Minneapolis, Minnesota), pages 76-85,
Association for Computing Machinery, June 1998.
PostScript (328k, 10 pages),
PDF (181k, 10 pages).
An early version of the CDT existence proof,
which is the most difficult proof I've ever done.
This version of the proof is shorter than the more general and rigorous
proof in the paper above, but it also has some unnecessary complications that
I excised from the later version.
The proof is tough reading, but you don't need to understand it to use the
result.
Also includes a discussion of a slow-but-simple gift-wrapping algorithm
for constructing a constrained Delaunay triangulation.
This paper does not discuss weighted CDTs (constrained regular triangulations);
see the paper above for that.
Aimed at computational geometers.
Discusses the general-dimensional case.
Updating and Constructing Constrained Delaunay and
Constrained Regular Triangulations by Flips,
Proceedings of the Nineteenth Annual Symposium on
Computational Geometry (San Diego, California), pages 181-190,
Association for Computing Machinery, June 2003.
PostScript (545k, 14 pages including a four-page appendix
not in the published version),
PDF (244k, 14 pages).
If you want to incrementally update a constrained Delaunay triangulation,
you need four operations:
inserting and deleting a facet, and inserting and deleting a vertex.
(To “insert a facet” is to force the faces of the CDT
to respect the facet;
to “delete a facet” is to relax the facet constraint so
the CDT can act a little more Delaunay and a little less constrained.)
This paper gives algorithms for the first two, based on simple bistellar flips.
A sweep algorithm for deleting a vertex appears in the paper below
(and it is trivially converted to a flip algorithm).
Finally, Barry Joe's flip algorithm for inserting a vertex
into a Delaunay triangulation is easily modified to work in a CDT.
These operations work in any dimensionality, and they can all be applied
to the more general class of
constrained regular triangulations (which include CDTs).
+ 1 log nv) time,
where nv is the number of input vertices
and d is the dimensionality.
In odd dimensions (including three dimensions, which is what I care about most)
this is within a factor of log nv of worst-case optimal.
The algorithm is likely to take only
O(nv log nv)
time in many practical cases.
Aimed at both programmers and computational geometers.
Discusses the general-dimensional case, but most useful in three dimensions.
Sweep Algorithms for Constructing
Higher-Dimensional Constrained Delaunay Triangulations,
Proceedings of the Sixteenth Annual Symposium on
Computational Geometry (Hong Kong), pages 350-359,
Association for Computing Machinery, June 2000.
PostScript (352k, 10 pages),
PDF (195k, 10 pages).
Gives an O(nvns)-time sweep algorithm
for constructing a constrained Delaunay triangulation,
where nv is the number of input vertices,
and ns is the number of simplices in the triangulation.
(The algorithm is likely to be faster in most practical cases.)
The running time improves to
O(ns log nv)
for star-shaped polytopes, yielding an efficient way to delete a vertex
from a CDT.
Nicolas Grislain and Jonathan Richard Shewchuk,
The Strange Complexity of Constrained Delaunay Triangulation,
Proceedings of the Fifteenth Canadian Conference on Computational Geometry
(Halifax, Nova Scotia), pages 89-93, August 2003.
PostScript (195k, 4 pages),
PDF (73k, 4 pages).
The problem of constructing
a constrained Delaunay tetrahedralization has the unusual status
(for a small-dimensional problem) of being NP-hard only for
degenerate inputs, namely those with subsets of five or more
cospherical vertices.
This paper proves one half of that statement:
it is NP-hard to decide whether a polyhedron
has a constrained Delaunay tetrahedralization.
The paper on sweep algorithms (above) contains the proof of the other half:
for a polyhedron (or more generally, a piecewise linear complex)
with no five vertices lying on a common sphere, a polynomial-time algorithm
constructs the CDT (if it exists) and thereby solves the decision problem.
Freaky, eh?
Stabbing Delaunay Tetrahedralizations,
Discrete & Computational Geometry 32(3):339-343, October 2004.
PostScript (143k, 4 pages),
PDF (70k, 4 pages),
HTML.
This note answers (pessimistically) the formerly open question of
how many tetrahedra in an n-point Delaunay tetrahedralization
can be stabbed by a straight line.
The answer: for a worst-case tetrahedralization,
a line can intersect the interiors of
tetrahedra.
In d dimensions,
a line can stab the interiors of
Delaunay d-simplices.
The result explains why my sweep algorithm for constructing CDTs
has a worst-case running time of O(nvns) and not
O(nv2 +
ns log nv).
The difficulty of finding the worst-case example explains why
the sweep algorithm is unlikely to take longer than
O(nv2 +
ns log nv)
time on any real-world input.
Chen Shen, James F. O'Brien, and Jonathan R. Shewchuk,
Interpolating and Approximating Implicit Surfaces from Polygon Soup,
ACM Transactions on Graphics 23(3):896-904, August 2004.
Special issue on Proceedings of SIGGRAPH 2004.
PDF (color, 17,269k, 9 pages).
The Moving Least Squares (MLS) method is a popular way to define
an implicit surface that interpolates or approximates a set of points
in three-dimensional space.
But graphics programmers have made millions of polygonalized surface
models; what if we want to interpolate whole polygons?
Approximating a polygon as a bunch of points gives poor results.
Instead, we show how to force an MLS function to have a specified value over
each input polygon, by integrating constraints over triangles.
Better yet, we show how to force the MLS function to have a specified gradient
over each polygon as well,
so that we can robustly specify which parts of space should be
inside or outside the implicit surface—without creating
undue oscillations in the MLS function.
The trick is to define a different function on each input polygon, and
use MLS to interpolate between functions—not
just to interpolate between values
(as the usual formulations of MLS for implicit surfaces do).
This trick gives us profound control of an MLS function.
Although our examples are all surfaces embedded in three-dimensional space,
the techniques generalize to any dimensionality.
To make robust geometric tests fast, I propose two new techniques (which can also be applied to other problems of numerical accuracy). First, I develop and prove the correctness of software-level algorithms for arbitrary precision floating-point arithmetic. These algorithms are refinements (especially with regard to speed) of algorithms suggested by Douglas Priest, and are roughly five times faster than the best available competing method when values of small or intermediate precision (hundreds or thousands of bits) are used. Second, I show how simple expressions (whose only operations are addition, subtraction, and multiplication) can be computed adaptively, trading off accuracy and speed as necessary to satisfy an error bound as quickly as possible. (This technique is probably applicable to any exact arithmetic scheme.) I apply these ideas to build fast, correct orientation and incircle tests in two and three dimensions, and to make robust the implementations of two- and three-dimensional Delaunay triangulation in Triangle and Pyramid. Detailed measurements show that in most circumstances, these programs run nearly as quickly when using my adaptive predicates as they do using nonrobust predicates.
See my
Robust Predicates page for more information
about this research, or to obtain C source code for
exact floating-point addition and multiplication
and the robust geometric predicates.