A New Approach to Output-Sensitive Voronoi Diagramsdonsheehy.net/talks/socg13new.pdf · Delaunay...

Post on 10-Jul-2020

1 views 0 download

Transcript of A New Approach to Output-Sensitive Voronoi Diagramsdonsheehy.net/talks/socg13new.pdf · Delaunay...

A New Approach to Output-Sensitive

Voronoi Diagrams and

Delaunay Triangulations

Don SheehyINRIA Saclay, France

soon: UConn

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.

Geographical Information Systems

Voronoi Diagrams and Delaunay triangulations are used everywhere.

Geographical Information SystemsGraphics

Voronoi Diagrams and Delaunay triangulations are used everywhere.

Geographical Information SystemsGraphics

Topological Data Analysis

Voronoi Diagrams and Delaunay triangulations are used everywhere.

Geographical Information SystemsGraphics

Topological Data AnalysisMesh Generation

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)

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.

A brief history of Voronoi Diagram algorithms.(Convex Hull)

A brief history of Voronoi Diagram algorithms.O(n log n+ n

!d/2")Chazelle ’93

(Convex Hull)

A brief history of Voronoi Diagram algorithms.O(n log n+ n

!d/2")Chazelle ’93

(Convex Hull)

Swart ’85Avis & Fukuda ’92

O(nf)

A brief history of Voronoi Diagram algorithms.O(n log n+ n

!d/2")Chazelle ’93

(Convex Hull)

Swart ’85Avis & Fukuda ’92

O(nf)

O(n2 + f log n)Seidel ’86

A brief history of Voronoi Diagram algorithms.O(n log n+ n

!d/2")Chazelle ’93

(Convex Hull)

Swart ’85Avis & Fukuda ’92

O(nf)

O(n2 + f log n)Seidel ’86

O(n2! 2!d/2"+1 logO(1) n+ f log n)

Matousek and Schwartzkopf ’92

A brief history of Voronoi Diagram algorithms.O(n log n+ n

!d/2")Chazelle ’93

(Convex Hull)

Swart ’85Avis & Fukuda ’92

O(nf)

O(n2 + f log n)Seidel ’86

O(n2! 2!d/2"+1 logO(1) n+ f log n)

Matousek and Schwartzkopf ’92

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

!d/2"+1 logO(1) n)Chan’96

A brief history of Voronoi Diagram algorithms.O(n log n+ n

!d/2")Chazelle ’93

(Convex Hull)

Swart ’85Avis & Fukuda ’92

O(nf)

O(n2 + f log n)Seidel ’86

O(n2! 2!d/2"+1 logO(1) n+ f log n)

Matousek and Schwartzkopf ’92

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

!d/2"+1 logO(1) n)Chan’96

O((n+ (nf)1!1

!d/2" + fn1! 2

!d/2" ) logO(1) n)Chan, Snoeyink, Yap ’97

A brief history of Voronoi Diagram algorithms.O(n log n+ n

!d/2")Chazelle ’93

O(f log n log!)Miller and Sheehy(today’s talk)

(Convex Hull)

Swart ’85Avis & Fukuda ’92

O(nf)

O(n2 + f log n)Seidel ’86

O(n2! 2!d/2"+1 logO(1) n+ f log n)

Matousek and Schwartzkopf ’92

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

!d/2"+1 logO(1) n)Chan’96

O((n+ (nf)1!1

!d/2" + fn1! 2

!d/2" ) logO(1) n)Chan, Snoeyink, Yap ’97

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

Meshing Guarantees

Aspect Ratio (quality): vRv

rvRv

rv! !

Meshing Guarantees

Aspect Ratio (quality):

Cell Sizing:

vRv

rvRv

rv! !

lfs(x) := d(x, P \ {NN(x)})1

Klfs(v) ! Rv ! Klfs(v)

Meshing Guarantees

Aspect Ratio (quality):

Cell Sizing:

Constant Local Complexity:

vRv

rvRv

rv! !

lfs(x) := d(x, P \ {NN(x)})

Each cell has at most a constant number of faces.

1

Klfs(v) ! Rv ! Klfs(v)

Meshing Guarantees

Aspect Ratio (quality):

Cell Sizing:

Constant Local Complexity:

Optimal Size:

vRv

rvRv

rv! !

lfs(x) := d(x, P \ {NN(x)})

|M | = !(|Optimal|)

Each cell has at most a constant number of faces.

1

Klfs(v) ! Rv ! Klfs(v)

Meshing Guarantees

Aspect Ratio (quality):

Cell Sizing:

Constant Local Complexity:

Optimal Size:

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?

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.

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

SummaryA new output-sensitive algorithm for Voronoi diagrams and Delaunay triangulations in d-dimensions.

SummaryA new output-sensitive algorithm for Voronoi diagrams and Delaunay triangulations in d-dimensions.

Start with a quality mesh and then remove the Steiner points.

SummaryA 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.

SummaryA 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:

SummaryA 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.