Delaunay Triangulation and Tetrahedrilization

advertisement
Delaunay Triangulation and
Tetrahedrilization
Marc van Kreveld
Slides DDM
1
Triangulations and their quality
• When going from points on a surface to triangles
representing that surface, there are many ways to
form the triangles
• Some ways are better
than others
2
Triangulations and their quality
• This is not just true visually, but also when the
triangulation is the interpolator for a terrain with
elevation measurements
3
Triangulations and their quality
4
Triangulations and their quality
• Triangulations are good if they
–
–
–
–
–
–
do not have long edges
do not have triangles with both short and long edges
do not have triangles with very small angles
do not have triangles with obtuse angles
do not have vertices with high degree
…
5
Voronoi diagrams
• For a set of points (sites), the Voronoi diagram is the
subdivision of the plane (space) with faces where
exactly one of the sites is closest, among all sites
6
Voronoi diagrams
• Voronoi vertices “often” have degree 3, but it can be
much larger
• Voronoi edges can be bounded or unbounded
Voronoi edge
Voronoi vertex
7
Voronoi diagrams
• With n point sites, there are < 2n Voronoi vertices
and < 3n Voronoi edges
Voronoi edge
Voronoi vertex
8
Voronoi diagrams
• The average number of edges bounding a Voronoi
cell is six (or slightly less), but a single cell could be
bounded by up to n – 1 edges
Voronoi edge
Voronoi vertex
9
Voronoi diagrams
• Voronoi diagrams have the empty circle property
for every Voronoi vertex and Voronoi edge
10
Voronoi diagrams
• Efficient algorithms exist to construct 2D Voronoi
diagrams of n point sites, namely O(n log n) time
algorithms (as fast as sorting! [mergesort, quicksort])
11
Voronoi diagrams
• 3D Voronoi diagrams with n point sites can have up
to (n2) Voronoi vertices (0D), Voronoi edges (1D),
and Voronoi facets (2D) but of course just n cells (3D)
• The descriptive complexity can be anything between
linear and
quadratic in n
12
Voronoi diagrams
• 3D Voronoi diagrams with n point sites often have
linearly many Voronoi vertices (0D), Voronoi edges
(1D), and Voronoi facets (2D)
13
Delaunay triangulation
• For a set of points in the plane, suppose we compute
its Voronoi diagram and use it to make an embedded
planar graph G as follows:
– all points are vertices of the graph G
– for all points whose Voronoi cells share a Voronoi edge,
we have an edge in G
– faces of G are implied by the vertices and edges of G
14
Delaunay triangulation
– all points are vertices of the graph G
– edges in G correspond to edge-adjacent Voronoi cells
– faces of G are implied by the vertices and edges of G
15
Delaunay triangulation
– all points are vertices of the graph G
– edges in G correspond to edge-adjacent Voronoi cells
– faces of G are implied by the vertices and edges of G
16
Delaunay triangulation
• This graph is called the Delaunay graph
• Notice that an edge of the Delaunay graph does not
necessarily intersect the corresponding Voronoi edge
17
Delaunay triangulation
• The Delaunay graph is a triangulation of the original
points if and only if all Voronoi vertices have degree 3
 there is no circle through more than 3 sites and with
no sites inside
18
Delaunay triangulation
• Any (planar) completion of the Delaunay graph to a
triangulation is a Delaunay triangulation of the
original points
19
Delaunay triangulation
• The empty-circle property for Voronoi diagrams
transfers to Delaunay triangulations
– for each triangle, its circumcircle
contains no other points
from the set inside
– for each edge, a circle
exists through its
endpoints that has
no other points of
the set inside
20
Delaunay triangulation
• A Delaunay triangulation of n points has at least n – 2
and at most 2n – 5 triangles (Delaunay triangles)
• A Delaunay triangulation of n points has at least 2n – 3
and at most 3n – 6 edges (Delaunay edges)
• The empty-circle property is “if and only if”:
if three points have a circumcircle with no points
inside or other points on the boundary, then they
make a Delaunay triangle
(a similar statement holds for edges)
21
Delaunay triangulation
• When a Delaunay graph is not a triangulation, the
non-triangular faces have all vertices on a circle
22
Delaunay triangulation
23
Delaunay triangulation
24
Delaunay triangulation
25
Delaunay triangulation
26
Delaunay triangulation
27
Delaunay triangulation
• When we know four Delaunay edges that form an
empty convex quadrilateral, we will have one of the
two diagonals as a Delaunay edge
• The circumcircles of the triangles of one choice will
contain the fourth points, but not for the other choice
28
Delaunay triangulation
• The Delaunay triangulation maximizes the smallest
occurring angle, over all triangulations of the point set
• In other words, any other triangulation will have a
smaller (or the same) smallest angle
29
Delaunay triangulation
• The Delaunay triangulation often connects points
close together, e.g., every point is connected to its
nearest neighbor
• But it does not minimize total edge length
30
Delaunay triangulation
• In a triangulation, when two triangles form a convex
quadrilateral, their shared edge can be replaced by
one other edge
• This is called an edge flip
flip
31
Computing the Delaunay triangulation
• Approach: insert points one-by-one, and restore the
Delaunay triangulation after every insertion
1. Locate the triangle t containing the next point p
2. Connect p to t’s vertices
3. Restore the Delaunay
triangulation by flipping
non-Delaunay edges
p
t
32
Computing the Delaunay triangulation
• Locate: Recall that we store triangulations in some
convenient structure (triangle-neighbor structure,
half-edge structure)
• From any access point
p
(triangle, half-edge), walk
along a straight line to the
location of the p, finding
the triangle t containing p
• The details of the walk depend on the mesh
structure used
33
Computing the Delaunay triangulation
• Connect: Make edges from p to t’s vertices; this
replaces t by three new triangles
• Adapt the mesh representation
structure accordingly
p
Claim: These three new edges are Delaunay
34
Computing the Delaunay triangulation
• Proof of claim:
– Triangle t was Delaunay before the insertion of p,
so there was an empty circle C through its vertices
C
v
p
t
35
Computing the Delaunay triangulation
• Proof of claim:
– Triangle t was Delaunay before the insertion of p,
so there was an empty circle C through its vertices
– Consider the edge between p and
C
any vertex v of t, there is always a
circle through p and v completely
inside C (grow a small circle from
v
p
v tangent to C at v, until it hits p)
t
36
Computing the Delaunay triangulation
• Proof of claim:
– Triangle t was Delaunay before the insertion of p,
so there was an empty circle C through its vertices
– Consider the edge between p and
C
any vertex v of t, there is always a
circle through p and v completely
inside C (grow a small circle from
v
p
v tangent to C at v, until it hits p)
t
– Since v and p have an empty circle,
they define a Delaunay edge
37
Computing the Delaunay triangulation
• Restore: The three new edges are always Delaunay,
but the three new triangles need not be …
Delaunay
p
p
maybe not Delaunay
38
Computing the Delaunay triangulation
• In the picture: triangle qrs had an empty circle C(q,r,s)
before the insertion of p, but maybe p lies inside now
 test p C(q,r,s), and if so, edge-flip qr to ps
Delaunay
q
q
p
s
C(q,r,s)
p
r
s
r
maybe not Delaunay
39
Computing the Delaunay triangulation
• If flipped, the edges pq, pr, and also ps must be
Delaunay, but maybe pqs and prs are not Delaunay
triangles …  recurse on them, using the triangles
opposite qs and rs
Delaunay
Delaunay
q
q
p
s
p
r
maybe not Delaunay
s
r
maybe not Delaunay
40
Computing the Delaunay triangulation
• Code for recursive flipping (restore algorithm):
TestFlipEdge (p, qr)
Let s  p be the third point of the triangle incident to qr
if p is inside C(q,r,s)
{
flip: delete qr and insert ps in the triangulation
TestFlipEdge(p, qs)
TestFlipEdge(p, sr)
}
41
Computing the Delaunay triangulation
• Comments:
– The edge flip must be done in our triangle-mesh
representation structure (triangle-neighbor, half-edge, …)
– With suitable triangle-mesh structure, a flip takes O(1) time
(with an indexed mesh, a flip takes O(n) time)
– Every edge flip connects p to an extra vertex
 on the average, about 3 flips are needed
– The main geometric test is the so-called in-circle test: does
a point p lie inside the circle defined by three points q,r,s?
42
The in-circle test
• The in-circle test: does a point p lie inside the circle
defined by three points q,r,s? (1) The bad way:
– Compute the bisectors of q,r and r,s
– Intersect them to get the center c of C(q,r,s)
– Compute dist(c,p) and dist(c,q) (the radius of C(q,r,s));
if the former is smaller, then p lies inside C(q,r,s)
43
The in-circle test
• The in-circle test: does a point p lie inside the circle
defined by three points q,r,s? (2) The good way:
– Compute the plane through (qx, qy, qx2 + qy2), (rx, ry, rx2 + ry2),
and (sx, sy, sx2 + sy2)
– Test whether the point (px, py, px2 + py2) lies above or below
this plane:
below  p is inside;
above  p is outside
44
The in-circle test
• The in-circle test: does a point p lie inside the circle
defined by three points q,r,s? (2) The good way:
– Compute the plane through (qx, qy, qx2 + qy2), (rx, ry, rx2 + ry2),
and (sx, sy, sx2 + sy2)
– Test whether the point (px, py, px2 + py2) lies above or below
this plane
• This is equivalent to computing the sign of the 4x4
determinant:
qx qy qx 2 + qy2 1
rx ry rx 2 + ry 2 1
negative
s x s y s x 2 + s y2 1
 inside
px py px 2 + py2 1
45
The whole algorithm
• Initialization: we want to make sure that the next
point p is always in some triangle of the current
triangulation  start with a suitable bounding box
(triangulated)
46
The whole algorithm
• The four extra vertices need special treatment when
they are involved in an in-circle test (because they do
not count for the empty-circle property)
47
The whole algorithm
1. Initialize a triangulation T with a bounding box
2. For each point pi
i.
Locate the triangle t of T containing pi by traversing the
triangle-mesh structure from some access point
ii. Connect pi to the vertices of t
iii. (Restore) For each edge e of t, TestFlipEdge(p, e)
48
Efficiency of the algorithm
• Locate: if the points
are distributed
“reasonably”, a line
typically intersects
O(n) triangles
(certainly true if
the points lie in a
regular square grid
pattern)
• Worst-case O(n) time
some fixed starting point
49
Efficiency of the algorithm
• Connect: obviously O(1) time in the triangle-neighbor
structure and half-edge structure
• Restore: typically 3 flips are needed: the average
degree of a vertex in a triangulation is  6, connect
leads to a starting degree of 3 for pi, and every flip
increases the degree of pi by 1  typically O(1) time,
but worst-case O(n) time
50
Efficiency of the algorithm
• Initialization O(n) time
• Insertion of the i-th point takes worst-case O(i) time
but typically O(i) time
• Worst-case O(n2) time algorithm
• Typically O(nn) time algorithm
Note: worst-case O(n log n) time algorithms exist;
these are more complicated
51
Delaunay tetrahedrilization
• Global approach the same
• The in-circle test becomes an in-sphere test
(solved with a 5x5 determinant)
• The edge-flip becomes a bi-stellar flip: 2  3 tetrahedra
52
Delaunay tetrahedrilization
53
Terrains and 2D/3D Delaunay
• Note the difference:
– A polyhedral terrain (triangular mesh representing elevation)
obtained by computing the Delaunay triangulation of the
(x,y) points and using the triangles in 3D
– A 3D Delaunay tetrahedrilization of the (x,y,z) points
• A triangle in the first case does not necessarily occur
as a triangular facet in the second case (the 2D circle
can be small when the 3D ball is huge)
54
Constrained Delaunay triangulation
• Variation on the Delaunay triangulation where
certain edges must be included (even if they are not
Delaunay)
• Endpoints of such constraining edges are also vertices
of the constrained Delaunay triangulation
55
Constrained Delaunay triangulation
• Useful when known linear features must be included
in the triangulation
– some polygon boundary
– lake boundaries in a terrain with elevation values known
56
Constrained Delaunay triangulation
• Input: set of points and set of edges (constraints)
57
Constrained Delaunay triangulation
• Input: set of points and set of edges (constraints)
constrained
Delaunay
triangulation
58
Constrained Delaunay triangulation
• Input: set of points and set of edges (constraints)
normal
Delaunay
triangulation
59
Constrained Delaunay triangulation
• Relaxed empty-circle property: three points define a
circle in the constrained Delaunay graph if and only
if their circumcircle has no other points (including
constraint endpoints) inside or on the boundary,
with the possible exception
of points on the other side
of constraints that cut
the circle fully
60
Constrained Delaunay triangulation
• To compute the constrained Delaunay triangulation,
first compute the normal Delaunay triangulation of
the points and constraint endpoints
• Then insert the constraints one by one, removing the
intersected edges/triangles, and re-triangulating the
holes
61
Constrained Delaunay triangulation
Build Delaunay
triangulation
62
Constrained Delaunay triangulation
Insert constraining
edge by removing
intersected edges
and triangles
63
Constrained Delaunay triangulation
Note: all other
edges and triangles
remain in the CDT,
because the empty
circle of the DT will
also be an empty
circle with the
constraint added
64
Constrained Delaunay triangulation
Triangulate the
cavity by shrinking
a circle through
the constraint
endpoints until it
reaches a vertex
65
Constrained Delaunay triangulation
Make two new
edges to this vertex
from the other
points defining the
circle, and recurse
66
Constrained Delaunay triangulation
67
Constrained Delaunay triangulation
• A constrained Delaunay triangulation can be
constructed in O(n log n) time in the worst case
(for n points and constraints)
• The given algorithm takes O(n3) time in the worst
case but one expects much better performance
68
Constrained Delaunay in 3D
• Constrained Delaunay tetrahedrilizations do not
always exist
• We would need to subdivide constraining facets
using extra vertices and edges
69
Steiner points in triangulations
• The Delaunay triangulation of the given points may
not give sufficiently well-shaped triangles  add
extra points (Steiner points)
• Useful for point sets with or without constraints
70
Steiner points in triangulations
• Steiner points can lower the maximum vertex degree
and improve the smallest occurring angle
• Steiner points placed on a constraint can break it into
several shorter constraints
71
Steiner points in triangulations
• A common example is triangulating a simple polygon
with Steiner points on the edges and inside
72
Questions
1. Prove that edge ps (slide 38/39) is always Delaunay, using the
empty circles known from the situation before p was inserted
2. Why is the running time of inserting all constraints
incrementally into a constrained Delaunay triangulation at
most cubic in the number of points and constraints?
3. Why do we expect much better performance than cubic when
inserting all constraints?
73
Download