Voronoi Diagrams Delaunay Triangulations

Report 11 Downloads 155 Views
A New Approach to Output-Sensitive

Voronoi Diagrams and

Delaunay Triangulations Don Sheehy INRIA Saclay, France Joint work with Gary Miller at CMU

Voronoi Diagrams

Voronoi Diagrams The Voronoi cell of p is the set of reverse nearest neighbors of p.

Voronoi Diagrams The Voronoi cell of p is the set of reverse nearest neighbors of p.

Voronoi Diagrams The Voronoi cell of p is the set of reverse nearest neighbors of p.

The Voronoi diagram is dual to the Delaunay triangulation.

Voronoi Diagrams The Voronoi cell of p is the set of reverse nearest neighbors of p.

The Voronoi diagram is dual to the Delaunay triangulation.

Voronoi Diagrams The Voronoi cell of p is the set of reverse nearest neighbors of p.

The Voronoi diagram is dual to the Delaunay triangulation.

Voronoi Diagrams The 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

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. (dual to Power diagrams)

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. (dual to Power diagrams)

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. (dual to Power diagrams)

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. (dual to Power diagrams)

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. (dual to Power diagrams)

Weighted Voronoi Diagrams (aka Power Diagrams)

Weighted Voronoi Diagrams (aka Power Diagrams)

The diagrams remain piecewise linear.

Weighted Voronoi Diagrams (aka Power Diagrams)

The diagrams remain piecewise linear. Some points disappear.

Weighted Voronoi Diagrams (aka Power Diagrams)

The diagrams remain piecewise linear. Some points disappear. Circumballs are replaced by orthoballs.

Weighted Voronoi Diagrams (aka Power Diagrams)

The diagrams remain piecewise linear. Some points disappear. Circumballs are replaced by orthoballs.

(Convex Hull)

A brief history of Voronoi Diagram algorithms.

(Convex Hull)

A brief history of Voronoi Diagram algorithms. Chazelle

O(n log n + n

!d/2"

)

(Convex Hull)

A brief history of Voronoi Diagram algorithms. Chazelle

O(n log n + n

Swart Avis & Fukuda O(nf )

!d/2"

)

(Convex Hull)

A brief history of Voronoi Diagram algorithms. Chazelle

O(n log n + n

!d/2"

Swart Avis & Fukuda O(nf ) Seidel

2

O(n + f log n)

)

(Convex Hull)

A brief history of Voronoi Diagram algorithms. Chazelle

O(n log n + n

!d/2"

)

Swart Avis & Fukuda O(nf ) Seidel Matousek and Schwartzkopf

2

O(n + f log n) O(n

2 2− !d/2"+1

log

O(1)

n + f log n)

(Convex Hull)

A brief history of Voronoi Diagram algorithms. Chazelle

O(n log n + n

!d/2"

)

Swart Avis & Fukuda O(nf ) Seidel Matousek and Schwartzkopf Chan

2

O(n + f log n) O(n

2 2− !d/2"+1

log

O(1)

O(n log f + (nf )

n + f log n)

1 1− !d/2"+1

log

O(1)

n)

(Convex Hull)

A brief history of Voronoi Diagram algorithms. Chazelle

O(n log n + n

!d/2"

)

Swart Avis & Fukuda O(nf ) Seidel Matousek and Schwartzkopf Chan Chan, Snoeyink, Yap

2

O(n + f log n) O(n

2 2− !d/2"+1

log

O(1)

O(n log f + (nf ) O((n + (nf )

n + f log n)

1 1− !d/2"+1

1 1− !d/2"

+ fn

log

O(1)

2 1− !d/2"

n)

) log

O(1)

n)

(Convex Hull)

A brief history of Voronoi Diagram algorithms. Chazelle

O(n log n + n

!d/2"

)

Swart Avis & Fukuda O(nf ) 2

Seidel

O(n + f log n)

Matousek and Schwartzkopf Chan Chan, Snoeyink, Yap

O(n

2 2− !d/2"+1

log

O(1)

O(n log f + (nf ) O((n + (nf )

(today’s talk)

1 1− !d/2"+1

1 1− !d/2"

Miller and Sheehy

n + f log n)

+ fn

log

O(1)

2 1− !d/2"

O(f log n log ∆)

n)

) log

O(1)

n)

Meshing Points Input: P ⊂ Rd Output: M ⊃ P with a “nice” Voronoi diagram n = |P |, m = |M |

Meshing Points Input: P ⊂ Rd Output: M ⊃ P with a “nice” Voronoi diagram n = |P |, m = |M |

Meshing Points Input: P ⊂ Rd Output: M ⊃ P with a “nice” Voronoi diagram n = |P |, m = |M |

Meshing Points Input: P ⊂ Rd Output: M ⊃ P with a “nice” Voronoi diagram n = |P |, m = |M |

Meshing Points Input: 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):

v

Rv ≤τ rv

Rv rv

Cell Sizing:

lfs(x) := d(x, P \ {NN(x)}) 1 lfs(v) ≤ Rv ≤ Klfs(v) K Constant Local Complexity: Each cell has at most a constant number of faces. Optimality and Running time:

|M | = Θ(|Optimal|) Running time: O(n log n + |M |)

Mesh Generation in reverse?

Mesh Generation in reverse?

Build a quality mesh.

Mesh Generation in reverse?

Build a quality mesh. Increase the weights of the input points.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.   d+2 points cospherical iff

p1 det  1 !p1 !2

··· ··· ···

pd+2 =0 1 !pd+2 !2

Computing the flip times only requires a single determinant computation.   d+2 points cospherical iff

p1 det  1 !p1 !2

··· ··· ···

pd+2 =0 1 !pd+2 !2

d+2 weighted points on a common orthosphere iff   p1 ··· pd+2 =0 1 ··· 1 det  !p1 !2 − w1 · · · !pd+2 !2 − wd+2

Computing the flip times only requires a single determinant computation.   p1 det  1 !p1 !2

d+2 points cospherical iff

··· ··· ···

pd+2 =0 1 !pd+2 !2

d+2 weighted points on a common orthosphere iff   p1 ··· pd+2 =0 1 ··· 1 det  !p1 !2 − w1 · · · !pd+2 !2 − wd+2 Define

wi =

!

t if pi ∈ P 0 otherwise

Computing the flip times only requires a single determinant computation.   p1 det  1 !p1 !2

d+2 points cospherical iff

··· ··· ···

pd+2 =0 1 !pd+2 !2

d+2 weighted points on a common orthosphere iff   p1 ··· pd+2 =0 1 ··· 1 det  !p1 !2 − w1 · · · !pd+2 !2 − wd+2 Define

So,



wi =

p1 1 det  !p1 !2 − w1

!

··· ··· ···

t if pi ∈ P 0 otherwise 

pd+2  is linear in t. 1 !pd+2 !2 − wd+2

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.

Running time:

O(f log n log ∆)

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.

Running time:

O(f log n log ∆)

Thank you.