Output-Sensitive Voronoi Diagrams and Delaunay Triangulations
-
Upload
don-sheehy -
Category
Documents
-
view
381 -
download
0
description
Transcript of Output-Sensitive Voronoi Diagrams and Delaunay Triangulations
An Output-Sensitive Algorithm for
Voronoi Diagrams and
Delaunay Triangulations
Don SheehyINRIA Saclay, France
Joint work with Gary Miller at CMU
Voronoi Diagrams
Voronoi DiagramsThe Voronoi cell of p is the set of reverse nearest neighbors of p.
Voronoi DiagramsThe Voronoi cell of p is the set of reverse nearest neighbors of p.
Voronoi DiagramsThe Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
Voronoi DiagramsThe Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
Voronoi DiagramsThe Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
Voronoi DiagramsThe Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
Voronoi k-face Delaunay (d-k)-face
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850Snow 1854 (probably a myth, but a fun one)
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850Snow 1854 (probably a myth, but a fun one)Voronoi 1908
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850Snow 1854 (probably a myth, but a fun one)Voronoi 1908Thiessen 1911 (meteorology)
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850Snow 1854 (probably a myth, but a fun one)Voronoi 1908Thiessen 1911 (meteorology)
Geographical Information Systems
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850Snow 1854 (probably a myth, but a fun one)Voronoi 1908Thiessen 1911 (meteorology)
Geographical Information SystemsGraphics
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850Snow 1854 (probably a myth, but a fun one)Voronoi 1908Thiessen 1911 (meteorology)
Geographical Information SystemsGraphicsTopological Data Analysis
Voronoi Diagrams and Delaunay triangulations are used everywhere.
Descartes 1644Dirichlet 1850Snow 1854 (probably a myth, but a fun one)Voronoi 1908Thiessen 1911 (meteorology)
Geographical Information SystemsGraphicsTopological Data AnalysisMesh Generation
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
Delaunay triangulations and Voronoi diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
Weighted Voronoi Diagrams
Weighted Voronoi Diagrams
The diagrams remain piecewise linear.
Weighted Voronoi Diagrams
The diagrams remain piecewise linear.Some points disappear.
Weighted Voronoi Diagrams
The diagrams remain piecewise linear.Some points disappear.Circumballs are replaced by orthoballs.
Weighted Voronoi Diagrams
The diagrams remain piecewise linear.Some points disappear.Circumballs are replaced by orthoballs.
A brief history of Voronoi Diagram algorithms.(Convex Hull)
A brief history of Voronoi Diagram algorithms.
O(n log n+ n!d/2")Chazelle
(Convex Hull)
A brief history of Voronoi Diagram algorithms.
O(n log n+ n!d/2")Chazelle
Avis O(nf)
(Convex Hull)
A brief history of Voronoi Diagram algorithms.
O(n log n+ n!d/2")Chazelle
O(n2 + f log n)Seidel
Avis O(nf)
(Convex Hull)
A brief history of Voronoi Diagram algorithms.
O(n log n+ n!d/2")Chazelle
O(n2 + f log n)Seidel
O(n2! 2!d/2"+1 logO(1) n+ f log n)
Matousek and Schwartzkopf
Avis O(nf)
(Convex Hull)
A brief history of Voronoi Diagram algorithms.
O(n log n+ n!d/2")Chazelle
O(n2 + f log n)Seidel
O(n2! 2!d/2"+1 logO(1) n+ f log n)
Matousek and Schwartzkopf
O(n log f + (nf)1!1
!d/2"+1 logO(1) n)Chan
Avis O(nf)
(Convex Hull)
A brief history of Voronoi Diagram algorithms.
O(n log n+ n!d/2")Chazelle
O(n2 + f log n)Seidel
O(n2! 2!d/2"+1 logO(1) n+ f log n)
Matousek and Schwartzkopf
O(n log f + (nf)1!1
!d/2"+1 logO(1) n)Chan
O((n+ (nf)1!1
!d/2" + fn1! 2
!d/2" ) logO(1) n)Chan, Snoeyink, Yap
Avis O(nf)
(Convex Hull)
A brief history of Voronoi Diagram algorithms.
O(n log n+ n!d/2")Chazelle
O(n2 + f log n)Seidel
O(n2! 2!d/2"+1 logO(1) n+ f log n)
Matousek and Schwartzkopf
O(n log f + (nf)1!1
!d/2"+1 logO(1) n)Chan
O((n+ (nf)1!1
!d/2" + fn1! 2
!d/2" ) logO(1) n)Chan, Snoeyink, Yap
O(f log n log!)Miller and Sheehy(today’s talk)
Avis O(nf)
(Convex Hull)
Mesh Generation
Mesh GenerationDecompose a domain into simple elements.
Mesh GenerationDecompose a domain into simple elements.
Mesh Generation
Mesh Quality
Radius/Edge < const
Decompose a domain into simple elements.
Mesh Generation
X X✓
Mesh Quality
Radius/Edge < const
Decompose a domain into simple elements.
Mesh Generation
X X✓
Mesh Quality
Radius/Edge < const
Conforming to InputDecompose a domain into simple elements.
Mesh Generation
X X✓
Mesh Quality
Radius/Edge < const
Conforming to InputDecompose a domain into simple elements.
Mesh Generation
X X✓
Mesh Quality
Radius/Edge < const
Conforming to InputDecompose a domain into simple elements.
Mesh Generation
X X✓
Mesh Quality
Radius/Edge < const
Conforming to InputDecompose a domain into simple elements.
Mesh Generation
X X✓
Mesh Quality
Radius/Edge < const
Conforming to InputDecompose a domain into simple elements.
Voronoi Diagram
Mesh Generation
X X✓
Mesh Quality
Radius/Edge < const
OutRadius/InRadius < const
Conforming to InputDecompose a domain into simple elements.
Voronoi Diagram
Mesh Generation
X X✓
✓X
Mesh Quality
Radius/Edge < const
OutRadius/InRadius < const
Conforming to InputDecompose a domain into simple elements.
Voronoi Diagram
Mesh Generation
X X✓
✓X
Mesh Quality
Radius/Edge < const
OutRadius/InRadius < const
Conforming to InputDecompose a domain into simple elements.
Voronoi Diagram
Meshing PointsInput: P ! Rd
Output: M " P with a “nice” Voronoi diagram
n = |P |,m = |M |
Meshing PointsInput: P ! Rd
Output: M " P with a “nice” Voronoi diagram
n = |P |,m = |M |
Meshing PointsInput: P ! Rd
Output: M " P with a “nice” Voronoi diagram
n = |P |,m = |M |
Meshing PointsInput: P ! Rd
Output: M " P with a “nice” Voronoi diagram
n = |P |,m = |M |
Meshing PointsInput: P ! Rd
Output: M " P with a “nice” Voronoi diagram
n = |P |,m = |M |
Counterintuitive Fact about Meshing:It’s sometimes easier to build the Voronoi/Delaunay of a superset of the input, than of the input alone.
Meshing Guarantees
Aspect Ratio (quality):
Cell Sizing:
Constant Local Complexity:
Optimality and Running time:
vRv
rvRv
rv! !
lfs(x) := d(x, P \ {NN(x)})
|M | = !(|Optimal|)
Running time: O(n log n+ |M |)
Each cell has at most a constant number of faces.
1
Klfs(v) ! Rv ! Klfs(v)
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Mesh Generation in reverse?
Build a quality mesh.
Increase the weights of the input points.
Update the structure for each local change.
Local changes are flips.
Local changes are flips.
Local changes are flips.
Local changes are flips.
Local changes are flips.
Local changes are flips.
Local changes are flips.
Local changes are flips.
Flips correspond to intersections of the Voronoi diagram of the mesh and the Voronoi diagram of the input points.
Computing the flip times only requires a single determinant computation.
Computing the flip times only requires a single determinant computation.
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 · · · !pd+2!2
#
$ = 0d+2 points cospherical iff
Computing the flip times only requires a single determinant computation.
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 · · · !pd+2!2
#
$ = 0d+2 points cospherical iff
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 " w1 · · · !pd+2!2 " wd+2
#
$ = 0
d+2 weighted points on a common orthosphere iff
Computing the flip times only requires a single determinant computation.
wi =
!
t if pi ! P
0 otherwiseDefine
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 · · · !pd+2!2
#
$ = 0d+2 points cospherical iff
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 " w1 · · · !pd+2!2 " wd+2
#
$ = 0
d+2 weighted points on a common orthosphere iff
Computing the flip times only requires a single determinant computation.
wi =
!
t if pi ! P
0 otherwiseDefine
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 " w1 · · · !pd+2!2 " wd+2
#
$So, is linear in t.
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 · · · !pd+2!2
#
$ = 0d+2 points cospherical iff
det
!
"
p1 · · · pd+2
1 · · · 1
!p1!2 " w1 · · · !pd+2!2 " wd+2
#
$ = 0
d+2 weighted points on a common orthosphere iff
The Algorithm
The Algorithm
Add a bounding box around the points.
The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time.
The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time. (flip time is the weight of the input points when the flip happens)
The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time. (flip time is the weight of the input points when the flip happens)
Repeatedly pop a flip, attempt to do it, and update.
The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time. (flip time is the weight of the input points when the flip happens)
Repeatedly pop a flip, attempt to do it, and update.(at most O(1) new potential flips are added to the heap)
The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time. (flip time is the weight of the input points when the flip happens)
Repeatedly pop a flip, attempt to do it, and update.(at most O(1) new potential flips are added to the heap)
When the heap is empty, remove the bounding box and all incident Delaunay faces.
Flips happen at the intersections of Voronoi diagrams.
There are only log(spread) flips per face.
There are only log(spread) flips per face.
There are only log(spread) flips per face.
A summary of the analysis.
A summary of the analysis.
Full dimensional mesh cells intersect output faces at most log(spread) times.
A summary of the analysis.
Full dimensional mesh cells intersect output faces at most log(spread) times.
Since each mesh cell has only a constant number of faces, we only get O(f log(spread)) total flips.
A summary of the analysis.
Full dimensional mesh cells intersect output faces at most log(spread) times.
Since each mesh cell has only a constant number of faces, we only get O(f log(spread)) total flips.
Each flip generates at most O(1) new flips on the heap.
A summary of the analysis.
Full dimensional mesh cells intersect output faces at most log(spread) times.
Since each mesh cell has only a constant number of faces, we only get O(f log(spread)) total flips.
Each flip generates at most O(1) new flips on the heap.
The heap operations require O(log n) time each.
A summary of the analysis.
Full dimensional mesh cells intersect output faces at most log(spread) times.
Since each mesh cell has only a constant number of faces, we only get O(f log(spread)) total flips.
Each flip generates at most O(1) new flips on the heap.
The heap operations require O(log n) time each.
Total running time is O(f log n log (spread)).
Summary
Summary
A new output-sensitive algorithm for Voronoi diagrams and Delaunay triangulations in d-dimensions.
Summary
A new output-sensitive algorithm for Voronoi diagrams and Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
Summary
A new output-sensitive algorithm for Voronoi diagrams and Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
Use geometry to bound the combinatorial changes.
Summary
A new output-sensitive algorithm for Voronoi diagrams and Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
Use geometry to bound the combinatorial changes.
O(f log n log!)Running time:
Summary
A new output-sensitive algorithm for Voronoi diagrams and Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
Use geometry to bound the combinatorial changes.
O(f log n log!)Running time:
Thank you.