Definition and properties Other approachesclaudio.mirolo/... · Definition and properties...

275
Definition and properties Fortune’s algorithm Other approaches Voronoi Diagrams Claudio Mirolo Dip. di Scienze Matematiche, Informatiche e Fisiche Università di Udine, via delle Scienze 206 – Udine [email protected] Computational Geometry www.dimi.uniud.it/claudio C. Mirolo Voronoi Diagrams

Transcript of Definition and properties Other approachesclaudio.mirolo/... · Definition and properties...

Definition and propertiesFortune’s algorithmOther approaches

Voronoi Diagrams

Claudio Mirolo

Dip. di Scienze Matematiche, Informatiche e FisicheUniversità di Udine, via delle Scienze 206 – Udine

[email protected]

Computational Geometrywww.dimi.uniud.it/claudio

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

Outline

1 Definition and propertiesconvexity and connectednessstructural complexityvertices and edges

2 Fortune’s algorithmbeach lineplane sweepdiscussion

3 Other approachesdivide et imperaexploiting sites’ distribution

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

From sites

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

From sites to Voronoi diagram

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Outline

1 Definition and propertiesconvexity and connectednessstructural complexityvertices and edges

2 Fortune’s algorithmbeach lineplane sweepdiscussion

3 Other approachesdivide et imperaexploiting sites’ distribution

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Definitions

Given a set P = p1, p2, . . . , pn of n sites = pointsin the plane

Voronoi cell:

V (pi) = q ∈ <2 : ∀j 6= i . dist(q,pi) < dist(q,pj)

dist : Euclidean distance (usually)

Voronoi diagram = plane subdivision into n cells V (pi)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Definitions

Given a set P = p1, p2, . . . , pn of n sites = pointsin the plane

Voronoi cell:

V (pi) = q ∈ <2 : ∀j 6= i . dist(q,pi) < dist(q,pj)

dist : Euclidean distance (usually)

Voronoi diagram = plane subdivision into n cells V (pi)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Definitions

Given a set P = p1, p2, . . . , pn of n sites = pointsin the plane

Voronoi cell:

V (pi) = q ∈ <2 : ∀j 6= i . dist(q,pi) < dist(q,pj)

dist : Euclidean distance (usually)

Voronoi diagram = plane subdivision into n cells V (pi)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Definitions

Given a set P = p1, p2, . . . , pn of n sites = pointsin the plane

Voronoi cell:

V (pi) = q ∈ <2 : ∀j 6= i . dist(q,pi) < dist(q,pj)

dist : Euclidean distance (usually)

Voronoi diagram = plane subdivision into n cells V (pi)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization (I): bisectors and edges

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: bisectors and edges

The perpendicular bisector of pipj splits the planeinto two open halfplanes

h(pi ,pj) : containing pi

h(pj ,pi) : containing pj

⇒ V (pi) =⋂

j 6=i h(pi ,pj)

V (pi) is a (possibly unbounded) convex regionwith at most n − 1 edges and vertices

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: bisectors and edges

The perpendicular bisector of pipj splits the planeinto two open halfplanes

h(pi ,pj) : containing pi

h(pj ,pi) : containing pj

⇒ V (pi) =⋂

j 6=i h(pi ,pj)

V (pi) is a (possibly unbounded) convex regionwith at most n − 1 edges and vertices

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: bisectors and edges

The perpendicular bisector of pipj splits the planeinto two open halfplanes

h(pi ,pj) : containing pi

h(pj ,pi) : containing pj

⇒ V (pi) =⋂

j 6=i h(pi ,pj)

V (pi) is a (possibly unbounded) convex regionwith at most n − 1 edges and vertices

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: bisectors and edges

The perpendicular bisector of pipj splits the planeinto two open halfplanes

h(pi ,pj) : containing pi

h(pj ,pi) : containing pj

⇒ V (pi) =⋂

j 6=i h(pi ,pj)

V (pi) is a (possibly unbounded) convex regionwith at most n − 1 edges and vertices

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: bisectors and edges

The perpendicular bisector of pipj splits the planeinto two open halfplanes

h(pi ,pj) : containing pi

h(pj ,pi) : containing pj

⇒ V (pi) =⋂

j 6=i h(pi ,pj)

V (pi) is a (possibly unbounded) convex regionwith at most n − 1 edges and vertices

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: bisectors and edges

The perpendicular bisector of pipj splits the planeinto two open halfplanes

h(pi ,pj) : containing pi

h(pj ,pi) : containing pj

⇒ V (pi) =⋂

j 6=i h(pi ,pj)

V (pi) is a (possibly unbounded) convex regionwith at most n − 1 edges and vertices

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: edge graph

Consider the graph of edges and vertices of Vor(P)

If all the sites of P are collinearthen the edges of Vor(P) are n − 1 parallel lines

. . . Straightforward to see

Otherwise the graph of Vor(P) is connectedand the edges are either segments or half-lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: edge graph

Consider the graph of edges and vertices of Vor(P)

If all the sites of P are collinearthen the edges of Vor(P) are n − 1 parallel lines

. . . Straightforward to see

Otherwise the graph of Vor(P) is connectedand the edges are either segments or half-lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: edge graph

Consider the graph of edges and vertices of Vor(P)

If all the sites of P are collinearthen the edges of Vor(P) are n − 1 parallel lines

. . . Straightforward to see

Otherwise the graph of Vor(P) is connectedand the edges are either segments or half-lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: edge graph

Consider the graph of edges and vertices of Vor(P)

If all the sites of P are collinearthen the edges of Vor(P) are n − 1 parallel lines

. . . Straightforward to see

Otherwise the graph of Vor(P) is connectedand the edges are either segments or half-lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: edge graph

Consider the graph of edges and vertices of Vor(P)

If all the sites of P are collinearthen the edges of Vor(P) are n − 1 parallel lines

. . . Straightforward to see

Otherwise the graph of Vor(P) is connectedand the edges are either segments or half-lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: edge graph

Consider the graph of edges and vertices of Vor(P)

If all the sites of P are collinearthen the edges of Vor(P) are n − 1 parallel lines

. . . Straightforward to see

Otherwise the graph of Vor(P) is connectedand the edges are either segments or half-lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: kinds of edge

Suppose the full bisector of pipj is an edge e of Vor(P)

There must however exist a non-collinear site pk

Then the full bisector of pjpk intersects e

and e ∩ h(pk ,pj) cannot be on the boundary of V (pj)since pk is closer to its points than pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: kinds of edge

Suppose the full bisector of pipj is an edge e of Vor(P)

There must however exist a non-collinear site pk

Then the full bisector of pjpk intersects e

and e ∩ h(pk ,pj) cannot be on the boundary of V (pj)since pk is closer to its points than pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: kinds of edge

Suppose the full bisector of pipj is an edge e of Vor(P)

There must however exist a non-collinear site pk

Then the full bisector of pjpk intersects e

and e ∩ h(pk ,pj) cannot be on the boundary of V (pj)since pk is closer to its points than pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: kinds of edge

Suppose the full bisector of pipj is an edge e of Vor(P)

There must however exist a non-collinear site pk

Then the full bisector of pjpk intersects e

and e ∩ h(pk ,pj) cannot be on the boundary of V (pj)since pk is closer to its points than pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: kinds of edge

Suppose the full bisector of pipj is an edge e of Vor(P)

There must however exist a non-collinear site pk

Then the full bisector of pjpk intersects e

and e ∩ h(pk ,pj) cannot be on the boundary of V (pj)since pk is closer to its points than pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: connectedness

Suppose the graph of Vor(P) is not connected

Then a cell should separate two graph components

Since Voronoi cells are convex,it must be a strip between two parallel lines

but the edges cannot be full lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: connectedness

Suppose the graph of Vor(P) is not connected

Then a cell should separate two graph components

Since Voronoi cells are convex,it must be a strip between two parallel lines

but the edges cannot be full lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: connectedness

Suppose the graph of Vor(P) is not connected

Then a cell should separate two graph components

Since Voronoi cells are convex,it must be a strip between two parallel lines

but the edges cannot be full lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: connectedness

Suppose the graph of Vor(P) is not connected

Then a cell should separate two graph components

Since Voronoi cells are convex,it must be a strip between two parallel lines

but the edges cannot be full lines

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: graph complexity

Voronoi diagram of n sites

Number of vertices: nv ≤ 2n − 5

Number of edges: ne ≤ 3n − 6

Remark: O( n2 ) bisectors but only O( n ) edges!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: graph complexity

Voronoi diagram of n sites

Number of vertices: nv ≤ 2n − 5

Number of edges: ne ≤ 3n − 6

Remark: O( n2 ) bisectors but only O( n ) edges!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: graph complexity

Voronoi diagram of n sites

Number of vertices: nv ≤ 2n − 5

Number of edges: ne ≤ 3n − 6

Remark: O( n2 ) bisectors but only O( n ) edges!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Properties: graph complexity

Voronoi diagram of n sites

Number of vertices: nv ≤ 2n − 5

Number of edges: ne ≤ 3n − 6

Remark: O( n2 ) bisectors but only O( n ) edges!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

Prune the k unbounded edges at new points qi

Connect the k new point to form a closed polygon

The modified graph is still connectedand has as many faces as Vor(P) + one unbounded face

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

Prune the k unbounded edges at new points qi

Connect the k new point to form a closed polygon

The modified graph is still connectedand has as many faces as Vor(P) + one unbounded face

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

Prune the k unbounded edges at new points qi

Connect the k new point to form a closed polygon

The modified graph is still connectedand has as many faces as Vor(P) + one unbounded face

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

By Euler’s formula: n′v − n′e + n′f = 2

Moreover, the degree of each vertex is ≥ 3and each edge adds two to the overall degree, i.e.

2n′e =∑

u deg(u) ≥ 3n′v

⇒ 3n′v ≤ 2n′e = 2(n′v + n′f − 2)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

By Euler’s formula: n′v − n′e + n′f = 2

Moreover, the degree of each vertex is ≥ 3and each edge adds two to the overall degree, i.e.

2n′e =∑

u deg(u) ≥ 3n′v

⇒ 3n′v ≤ 2n′e = 2(n′v + n′f − 2)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

By Euler’s formula: n′v − n′e + n′f = 2

Moreover, the degree of each vertex is ≥ 3and each edge adds two to the overall degree, i.e.

2n′e =∑

u deg(u) ≥ 3n′v

⇒ 3n′v ≤ 2n′e = 2(n′v + n′f − 2)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

By Euler’s formula: n′v − n′e + n′f = 2

Moreover, the degree of each vertex is ≥ 3and each edge adds two to the overall degree, i.e.

2n′e =∑

u deg(u) ≥ 3n′v

⇒ 3n′v ≤ 2n′e = 2(n′v + n′f − 2)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

3n′v ≤ 2(n′v + n′f − 2)

where n′f = n + 1 and n′v = nv + k

⇒ nv ≤ 2n − k − 2 ≤ 2n − 5

(at least three unbounded edges: convex hull. . . )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

3n′v ≤ 2(n′v + n′f − 2)

where n′f = n + 1 and n′v = nv + k

⇒ n′v ≤ 2(n − 1)

⇒ nv ≤ 2n − k − 2 ≤ 2n − 5

(at least three unbounded edges: convex hull. . . )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

3n′v ≤ 2(n′v + n′f − 2)

where n′f = n + 1 and n′v = nv + k

⇒ nv + k ≤ 2(n − 1)

⇒ nv ≤ 2n − k − 2 ≤ 2n − 5

(at least three unbounded edges: convex hull. . . )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

3n′v ≤ 2(n′v + n′f − 2)

where n′f = n + 1 and n′v = nv + k

⇒ nv + k ≤ 2(n − 1)

⇒ nv ≤ 2n − k − 2 ≤ 2n − 5

(at least three unbounded edges: convex hull. . . )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

3n′v ≤ 2(n′v + n′f − 2)

where n′f = n + 1 and n′v = nv + k

⇒ nv + k ≤ 2(n − 1)

⇒ nv ≤ 2n − k − 2 ≤ 2n − 5

(at least three unbounded edges: convex hull. . . )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

3n′v ≤ 2(n′v + n′f − 2)

where n′f = n + 1 and n′v = nv + k

⇒ nv + k ≤ 2(n − 1)

⇒ nv ≤ 2n − k − 2 ≤ 2n − 5

(at least three unbounded edges: convex hull. . . )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

n′e = n′v + n′f − 2 where n′e = ne + k etc.

⇒ ne + k = nv + k + n + 1 − 2

⇒ ne = nv + n − 1 ≤ 2n − k − 2 + n − 1

⇒ ne ≤ 3n − k − 3 ≤ 3n − 6

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

n′e = n′v + n′f − 2 where n′e = ne + k etc.

⇒ ne + k = nv + k + n + 1 − 2

⇒ ne = nv + n − 1 ≤ 2n − k − 2 + n − 1

⇒ ne ≤ 3n − k − 3 ≤ 3n − 6

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

n′e = n′v + n′f − 2 where n′e = ne + k etc.

⇒ ne + k = nv + k + n + 1 − 2

⇒ ne = nv + n − 1 ≤ 2n − k − 2 + n − 1

⇒ ne ≤ 3n − k − 3 ≤ 3n − 6

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

n′e = n′v + n′f − 2 where n′e = ne + k etc.

⇒ ne + k = nv + k + n + 1 − 2

⇒ ne = nv + n − 1 ≤ 2n − k − 2 + n − 1

⇒ ne ≤ 3n − k − 3 ≤ 3n − 6

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: structural complexity

n′e = n′v + n′f − 2 where n′e = ne + k etc.

⇒ ne + k = nv + k + n + 1 − 2

⇒ ne = nv + n − 1 ≤ 2n − k − 2 + n − 1

⇒ ne ≤ 3n − k − 3 ≤ 3n − 6

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization (II): “empty” circles

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: “empty” circles

CP(q) = largest circle centered at qwith no site of P in its interior

Property: q is a vertex of Vor(P)

⇔ | P ∩ boundaryCP(q) | ≥ 3

Property: q ∈ bisector(pipj) belongs to an edge of Vor(P)

⇔ | P ∩ boundaryCP(q) | = pi , pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: “empty” circles

CP(q) = largest circle centered at qwith no site of P in its interior

Property: q is a vertex of Vor(P)

⇔ | P ∩ boundaryCP(q) | ≥ 3

Property: q ∈ bisector(pipj) belongs to an edge of Vor(P)

⇔ | P ∩ boundaryCP(q) | = pi , pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Characterization: “empty” circles

CP(q) = largest circle centered at qwith no site of P in its interior

Property: q is a vertex of Vor(P)

⇔ | P ∩ boundaryCP(q) | ≥ 3

Property: q ∈ bisector(pipj) belongs to an edge of Vor(P)

⇔ | P ∩ boundaryCP(q) | = pi , pj

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇒ )

q vertex of Vor(P)

⇒ q incident to at least three cells V (pi),V (pj),V (pk )

⇒ dist(q,pi) = dist(q,pj) = dist(q,pk )

and no other site of P is closer to q than pi ,pj ,pk

(otherwise V (pi ),V (pj ),V (pk ) would not meet at q)

⇒ the circle through pi , pj , pk is CP(q)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇒ )

q vertex of Vor(P)

⇒ q incident to at least three cells V (pi),V (pj),V (pk )

⇒ dist(q,pi) = dist(q,pj) = dist(q,pk )

and no other site of P is closer to q than pi ,pj ,pk

(otherwise V (pi ),V (pj ),V (pk ) would not meet at q)

⇒ the circle through pi , pj , pk is CP(q)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇒ )

q vertex of Vor(P)

⇒ q incident to at least three cells V (pi),V (pj),V (pk )

⇒ dist(q,pi) = dist(q,pj) = dist(q,pk )

and no other site of P is closer to q than pi ,pj ,pk

(otherwise V (pi ),V (pj ),V (pk ) would not meet at q)

⇒ the circle through pi , pj , pk is CP(q)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇒ )

q vertex of Vor(P)

⇒ q incident to at least three cells V (pi),V (pj),V (pk )

⇒ dist(q,pi) = dist(q,pj) = dist(q,pk )

and no other site of P is closer to q than pi ,pj ,pk

(otherwise V (pi ),V (pj ),V (pk ) would not meet at q)

⇒ the circle through pi , pj , pk is CP(q)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇒ )

q vertex of Vor(P)

⇒ q incident to at least three cells V (pi),V (pj),V (pk )

⇒ dist(q,pi) = dist(q,pj) = dist(q,pk )

and no other site of P is closer to q than pi ,pj ,pk

(otherwise V (pi ),V (pj ),V (pk ) would not meet at q)

⇒ the circle through pi , pj , pk is CP(q)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇒ )

q vertex of Vor(P)

⇒ q incident to at least three cells V (pi),V (pj),V (pk )

⇒ dist(q,pi) = dist(q,pj) = dist(q,pk )

and no other site of P is closer to q than pi ,pj ,pk

(otherwise V (pi ),V (pj ),V (pk ) would not meet at q)

⇒ the circle through pi , pj , pk is CP(q)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇐ )

| P ∩ boundaryCP(q) | ⊇ pi , pj , pk

and P ∩ interiorCP(q) = ∅

No other site of P is closer to q than pi , pj , pk

Then q belongs to the boundaries of V (pi), V (pj), V (pk )

⇒ q is a vertex of Vor(P)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇐ )

| P ∩ boundaryCP(q) | ⊇ pi , pj , pk

and P ∩ interiorCP(q) = ∅

No other site of P is closer to q than pi , pj , pk

Then q belongs to the boundaries of V (pi), V (pj), V (pk )

⇒ q is a vertex of Vor(P)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇐ )

| P ∩ boundaryCP(q) | ⊇ pi , pj , pk

and P ∩ interiorCP(q) = ∅

No other site of P is closer to q than pi , pj , pk

Then q belongs to the boundaries of V (pi), V (pj), V (pk )

⇒ q is a vertex of Vor(P)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: vertices (⇐ )

| P ∩ boundaryCP(q) | ⊇ pi , pj , pk

and P ∩ interiorCP(q) = ∅

No other site of P is closer to q than pi , pj , pk

Then q belongs to the boundaries of V (pi), V (pj), V (pk )

⇒ q is a vertex of Vor(P)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇒ )

q ∈ bisector(pipj) belongs to an edge of Vor(P)

⇒ | P ∩ boundaryCP(q) | = pi , pj

and no other site of P is closer to q than pi ,pj

(otherwise q would not be on the boundary of V (pi ),V (pj ))

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇒ )

q ∈ bisector(pipj) belongs to an edge of Vor(P)

⇒ | P ∩ boundaryCP(q) | = pi , pj

and no other site of P is closer to q than pi ,pj

(otherwise q would not be on the boundary of V (pi ),V (pj ))

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇒ )

q ∈ bisector(pipj) belongs to an edge of Vor(P)

⇒ | P ∩ boundaryCP(q) | = pi , pj

and no other site of P is closer to q than pi ,pj

(otherwise q would not be on the boundary of V (pi ),V (pj ))

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇐ )

| P ∩ boundaryCP(q) | = pi , pj

and P ∩ interiorCP(q) = ∅

Then dist(q,pi) = dist(q,pj) < dist(q,pk ) for k 6= i , j

⇒ q lies on an edge of Vor(P) on bisector(pipj)

but cannot be a vertex (see above)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇐ )

| P ∩ boundaryCP(q) | = pi , pj

and P ∩ interiorCP(q) = ∅

Then dist(q,pi) = dist(q,pj) < dist(q,pk ) for k 6= i , j

⇒ q lies on an edge of Vor(P) on bisector(pipj)

but cannot be a vertex (see above)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇐ )

| P ∩ boundaryCP(q) | = pi , pj

and P ∩ interiorCP(q) = ∅

Then dist(q,pi) = dist(q,pj) < dist(q,pk ) for k 6= i , j

⇒ q lies on an edge of Vor(P) on bisector(pipj)

but cannot be a vertex (see above)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇐ )

| P ∩ boundaryCP(q) | = pi , pj

and P ∩ interiorCP(q) = ∅

Then dist(q,pi) = dist(q,pj) < dist(q,pk ) for k 6= i , j

⇒ q lies on an edge of Vor(P) on bisector(pipj)

but cannot be a vertex (see above)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Proof: edges (⇐ )

| P ∩ boundaryCP(q) | = pi , pj

and P ∩ interiorCP(q) = ∅

Then dist(q,pi) = dist(q,pj) < dist(q,pk ) for k 6= i , j

⇒ q lies on an edge of Vor(P) on bisector(pipj)

but cannot be a vertex (see above)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Bisectors of convex hull’s edges

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Bisectors of convex hull’s edges

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Bisectors of convex hull’s edges

q ∈ bisector(pipj), edge of convex_hull(P)

Cpi ,pj(q) = CP(q) for q away enough

Conversely, q does not lie on an unbounded edgeif pi ,pj /∈ convex_hull(P)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Bisectors of convex hull’s edges

q ∈ bisector(pipj), edge of convex_hull(P)

Cpi ,pj(q) = CP(q) for q away enough

Conversely, q does not lie on an unbounded edgeif pi ,pj /∈ convex_hull(P)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Bisectors of convex hull’s edges

q ∈ bisector(pipj), edge of convex_hull(P)

Cpi ,pj(q) = CP(q) for q away enough

Conversely, q does not lie on an unbounded edgeif pi ,pj /∈ convex_hull(P)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

convexity and connectednessstructural complexityvertices and edges

Bisectors and convex hull’s edges

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Outline

1 Definition and propertiesconvexity and connectednessstructural complexityvertices and edges

2 Fortune’s algorithmbeach lineplane sweepdiscussion

3 Other approachesdivide et imperaexploiting sites’ distribution

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Building a Voronoi diagram

Lower bound: Ω( n logn )

since a Voronoi diagram can be used to sort numbers

Provisional upper bound: O( n2 logn )

since each cell can be computed by intersectingn − 1 halfplanes in O( n logn ) [various techniques]

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Building a Voronoi diagram

Lower bound: Ω( n logn )

since a Voronoi diagram can be used to sort numbers

Provisional upper bound: O( n2 logn )

since each cell can be computed by intersectingn − 1 halfplanes in O( n logn ) [various techniques]

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Building a Voronoi diagram

Lower bound: Ω( n logn )

since a Voronoi diagram can be used to sort numbers

Provisional upper bound: O( n2 logn )

since each cell can be computed by intersectingn − 1 halfplanes in O( n logn ) [various techniques]

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Building a Voronoi diagram

Lower bound: Ω( n logn )

since a Voronoi diagram can be used to sort numbers

Provisional upper bound: O( n2 logn )

since each cell can be computed by intersectingn − 1 halfplanes in O( n logn ) [various techniques]

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep?

Sweep line moving from left to right:

When it meets the leftmost vertex of V (pi) . . .

Site pi has not yet been processed!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep?

Sweep line moving from left to right:

When it meets the leftmost vertex of V (pi) . . .

Site pi has not yet been processed!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep?

Sweep line moving from left to right:

When it meets the leftmost vertex of V (pi) . . .

Site pi has not yet been processed!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep?

So, when the sweep line meets event point q

Which items of Vor(P) are already known?

→ Fortune’s algorithm (1986/87)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep?

So, when the sweep line meets event point q

Which items of Vor(P) are already known?

→ Fortune’s algorithm (1986/87)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep?

So, when the sweep line meets event point q

Which items of Vor(P) are already known?

→ Fortune’s algorithm (1986/87)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Sweep line and beach line

The information associated to the sweep line is aboutthe part of Vor(P) of the sites to its left that will not change

On the left side of the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Sweep line and beach line

The information associated to the sweep line is aboutthe part of Vor(P) of the sites to its left that will not change

On the left side of the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Sites and parabolae

A parabola bounds the regions of points which are closerto a given site (focus) than to the sweep line (directrix)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Sites and parabolae

A parabola bounds the regions of points which are closerto a given site (focus) than to the sweep line (directrix)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line: parabolic arcs

Points in the “yellow area” are closer to a visited sitethan to any other site to the right of the sweep line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line: parabolic arcs

Voronoi edges (or edge fragments) and verticesin the “yellow area” will not change any longer

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line’s properties

(i) The beach line is y -monotone

(ii) Breakpoints between parabolic arcsbelong to Voronoi edges

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Beach line’s properties

(i) The beach line is y -monotone

(ii) Breakpoints between parabolic arcsbelong to Voronoi edges

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

y -Monotononicity

(i) By construction:

Consider the intersections between a horizontal lineand all the parabolae relative to the visited sites. . .

and take the rightmost one

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

y -Monotononicity

(i) By construction:

Consider the intersections between a horizontal lineand all the parabolae relative to the visited sites. . .

and take the rightmost one

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

y -Monotononicity

(i) By construction:

Consider the intersections between a horizontal lineand all the parabolae relative to the visited sites. . .

and take the rightmost one

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) Breakpoint is on the bisector of the involved sites. . .

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) . . . and other sites are farther apart

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) More formally:

q break point on the beach line betweenthe parabolic arcs produced by sites pi and pj

⇒ pi and pj lie on a circle C = CP(q)

indeed, if a third site pk would fall in the interior of C,let r be C’s radius connecting q to the sweep line. . .

then there would be a point q∗ on r equidistantfrom pk and the sweep line, i.e. on the arc of pk

⇒ q wouldn’t lie on the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) More formally:

q break point on the beach line betweenthe parabolic arcs produced by sites pi and pj

⇒ pi and pj lie on a circle C = CP(q)

indeed, if a third site pk would fall in the interior of C,let r be C’s radius connecting q to the sweep line. . .

then there would be a point q∗ on r equidistantfrom pk and the sweep line, i.e. on the arc of pk

⇒ q wouldn’t lie on the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) More formally:

q break point on the beach line betweenthe parabolic arcs produced by sites pi and pj

⇒ pi and pj lie on a circle C = CP(q)

indeed, if a third site pk would fall in the interior of C,let r be C’s radius connecting q to the sweep line. . .

then there would be a point q∗ on r equidistantfrom pk and the sweep line, i.e. on the arc of pk

⇒ q wouldn’t lie on the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) More formally:

q break point on the beach line betweenthe parabolic arcs produced by sites pi and pj

⇒ pi and pj lie on a circle C = CP(q)

indeed, if a third site pk would fall in the interior of C,let r be C’s radius connecting q to the sweep line. . .

then there would be a point q∗ on r equidistantfrom pk and the sweep line, i.e. on the arc of pk

⇒ q wouldn’t lie on the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) More formally:

q break point on the beach line betweenthe parabolic arcs produced by sites pi and pj

⇒ pi and pj lie on a circle C = CP(q)

indeed, if a third site pk would fall in the interior of C,let r be C’s radius connecting q to the sweep line. . .

then there would be a point q∗ on r equidistantfrom pk and the sweep line, i.e. on the arc of pk

⇒ q wouldn’t lie on the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Breakpoints on Voronoi edges

(ii) More formally:

q break point on the beach line betweenthe parabolic arcs produced by sites pi and pj

⇒ pi and pj lie on a circle C = CP(q)

indeed, if a third site pk would fall in the interior of C,let r be C’s radius connecting q to the sweep line. . .

then there would be a point q∗ on r equidistantfrom pk and the sweep line, i.e. on the arc of pk

⇒ q wouldn’t lie on the beach line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

From sweep line to beach line

Sweep-line structure → beach-line structure

Plane-sweep events→ changes of beach-line’s combinatorial structure

emergence of a new parabolic arc

vanishing of an existing parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

From sweep line to beach line

Sweep-line structure → beach-line structure

Plane-sweep events→ changes of beach-line’s combinatorial structure

emergence of a new parabolic arc

vanishing of an existing parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

From sweep line to beach line

Sweep-line structure → beach-line structure

Plane-sweep events→ changes of beach-line’s combinatorial structure

emergence of a new parabolic arc

vanishing of an existing parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

From sweep line to beach line

Sweep-line structure → beach-line structure

Plane-sweep events→ changes of beach-line’s combinatorial structure

emergence of a new parabolic arc

vanishing of an existing parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Emergence of a new arc

A new arc appears (only) when the sweep line meets a site

Degenerate parabola:two overlapping horizontal half-lines → site event

Arcs cannot emerge “from behind” a parabolic arc

Arcs cannot emerge at a breakpoint of the beach-line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Emergence of a new arc

A new arc appears (only) when the sweep line meets a site

Degenerate parabola:two overlapping horizontal half-lines → site event

Arcs cannot emerge “from behind” a parabolic arc

Arcs cannot emerge at a breakpoint of the beach-line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Emergence of a new arc

A new arc appears (only) when the sweep line meets a site

Degenerate parabola:two overlapping horizontal half-lines → site event

Arcs cannot emerge “from behind” a parabolic arc

Arcs cannot emerge at a breakpoint of the beach-line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Emergence of a new arc

A new arc appears (only) when the sweep line meets a site

Degenerate parabola:two overlapping horizontal half-lines → site event

Arcs cannot emerge “from behind” a parabolic arc

Arcs cannot emerge at a breakpoint of the beach-line

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Vanishing of an existing arc

An arc disappears (only) when two breakpoints meet

The arc in between shrinks to a point q

q must be equidistant from the three involved sitesand from the sweeping line → circle event

Arcs cannot vanish “behind” a parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Vanishing of an existing arc

An arc disappears (only) when two breakpoints meet

The arc in between shrinks to a point q

q must be equidistant from the three involved sitesand from the sweeping line → circle event

Arcs cannot vanish “behind” a parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Vanishing of an existing arc

An arc disappears (only) when two breakpoints meet

The arc in between shrinks to a point q

q must be equidistant from the three involved sitesand from the sweeping line → circle event

Arcs cannot vanish “behind” a parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Vanishing of an existing arc

An arc disappears (only) when two breakpoints meet

The arc in between shrinks to a point q

q must be equidistant from the three involved sitesand from the sweeping line → circle event

Arcs cannot vanish “behind” a parabolic arc

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Sites pi = (xi , yi), pj = (xj , yj), sweep line at x0

Parabolic arc βi : 2x(x0 − xi) + (y − yi)2 = x2

0 − x2i

Parabolic arc βj : 2x(x0 − xj) + (y − yj)2 = x2

0 − x2j

βi ∩ βj ∈ sij : 2x(xj − xi) + 2y(yj − yi) = x2j − x2

i + y2j − y2

i

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Sites pi = (xi , yi), pj = (xj , yj), sweep line at x0

Parabolic arc βi : 2x(x0 − xi) + (y − yi)2 = x2

0 − x2i

Parabolic arc βj : 2x(x0 − xj) + (y − yj)2 = x2

0 − x2j

βi ∩ βj ∈ sij : 2x(xj − xi) + 2y(yj − yi) = x2j − x2

i + y2j − y2

i

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Sites pi = (xi , yi), pj = (xj , yj), sweep line at x0

Parabolic arc βi : 2x(x0 − xi) + (y − yi)2 = x2

0 − x2i

Parabolic arc βj : 2x(x0 − xj) + (y − yj)2 = x2

0 − x2j

βi ∩ βj ∈ sij : 2x(xj − xi) + 2y(yj − yi) = x2j − x2

i + y2j − y2

i

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Sites pi = (xi , yi), pj = (xj , yj), sweep line at x0

Parabolic arc βi : 2x(x0 − xi) + (y − yi)2 = x2

0 − x2i

Parabolic arc βj : 2x(x0 − xj) + (y − yj)2 = x2

0 − x2j

βi ∩ βj ∈ sij : 2x(xj − xi) + 2y(yj − yi) = x2j − x2

i + y2j − y2

i

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Sites pi = (xi , yi), pj = (xj , yj), sweep line at x0

Parabolic arc βi : 2x(x0 − xi) + (y − yi)2 = x2

0 − x2i

Parabolic arc βj : 2x(x0 − xj) + (y − yj)2 = x2

0 − x2j

βi ∩ βj ∈ sij : 2x(xj − xi) + 2y(yj − yi) = x2j − x2

i + y2j − y2

i

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Midpoint of pipj : q = (xi+xj

2 ,yi+yj

2 ) ∈ sij

If pj is behind βi at some stage → q is behind βi as well

→ sij can never be a shared tangent of βi and βj . . .

whereas this should be the case at some (later/earlier)stage if βj is either to emerge from or vanish behind βi

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Midpoint of pipj : q = (xi+xj

2 ,yi+yj

2 ) ∈ sij

If pj is behind βi at some stage → q is behind βi as well

→ sij can never be a shared tangent of βi and βj . . .

whereas this should be the case at some (later/earlier)stage if βj is either to emerge from or vanish behind βi

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Midpoint of pipj : q = (xi+xj

2 ,yi+yj

2 ) ∈ sij

If pj is behind βi at some stage → q is behind βi as well

→ sij can never be a shared tangent of βi and βj . . .

whereas this should be the case at some (later/earlier)stage if βj is either to emerge from or vanish behind βi

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Midpoint of pipj : q = (xi+xj

2 ,yi+yj

2 ) ∈ sij

If pj is behind βi at some stage → q is behind βi as well

→ sij can never be a shared tangent of βi and βj . . .

whereas this should be the case at some (later/earlier)stage if βj is either to emerge from or vanish behind βi

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc can neither emerge from nor vanish behinda parabolic arc of the beach-line

Midpoint of pipj : q = (xi+xj

2 ,yi+yj

2 ) ∈ sij

If pj is behind βi at some stage → q is behind βi as well

→ sij can never be a shared tangent of βi and βj . . .

whereas this should be the case at some (later/earlier)stage if βj is either to emerge from or vanish behind βi

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc cannot emerge at a breakpoint of the beach-line

pi

pj

pk

q

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Justification

An arc cannot emerge at a breakpoint of the beach-line

pi

pj

pk

q

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Complexity of the beach line

The beach line consists of at most 2n − 1 arcs

New arcs only appear when visiting sites. . .

. . . and possibly split an existing parabolic arc

Example: n horizontally aligned sites!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Complexity of the beach line

The beach line consists of at most 2n − 1 arcs

New arcs only appear when visiting sites. . .

. . . and possibly split an existing parabolic arc

Example: n horizontally aligned sites!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Complexity of the beach line

The beach line consists of at most 2n − 1 arcs

New arcs only appear when visiting sites. . .

. . . and possibly split an existing parabolic arc

Example: n horizontally aligned sites!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Complexity of the beach line

The beach line consists of at most 2n − 1 arcs

New arcs only appear when visiting sites. . .

. . . and possibly split an existing parabolic arc

Example: n horizontally aligned sites!

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Fortune’s algorithm (re-interpreted by Guibas & Stolfi)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep events

Site event:

The sweep line meets a new site

Circle event:

The sweep line gets tangent to a circlemeeting three sites on its boundary

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep events

Site event:

The sweep line meets a new site

Circle event:

The sweep line gets tangent to a circlemeeting three sites on its boundary

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep events

Site event:

The sweep line meets a new site

Circle event:

The sweep line gets tangent to a circlemeeting three sites on its boundary

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Plane sweep events

Site event:

The sweep line meets a new site

Circle event:

The sweep line gets tangent to a circlemeeting three sites on its boundary

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Site events

(i) Site event involving an arc of the beach-line:A new Voronoi edge is being drawn from a midway point

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Site events

(i) Site event involving an arc of the beach-line:A new Voronoi edge is being drawn from a midway point

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Site events

(ii) Site event involving a breakpoint of the beach-line:A new vertex is found and two new incident edges start

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Site events

(ii) Site event involving a breakpoint of the beach-line:A new vertex is found and two new incident edges start

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Site events

(ii) Site event involving a breakpoint of the beach-line:A new vertex is found and two new incident edges start

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events

Circle event: Two edges meet at a new vertexand a new incident edge starts

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events

Circle event: Two edges meet at a new vertexand a new incident edge starts

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events

Circle event: Two edges meet at a new vertexand a new incident edge starts

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events

Circle event: Two edges meet at a new vertexand a new incident edge starts

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detecting events

Site events are all knownsince the beginning

Circle events are discoveredduring the plane sweep process

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detecting events

Site events are all knownsince the beginning

Circle events are discoveredduring the plane sweep process

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Data structures

Representation of the subdivision: DCEL (e.g.)

Event queue: balanced search tree

Beach-line structure: balanced search treeleaves → parabolic arcs

inner nodes → breakpoints

Cross-pointers between related structures

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Data structures

Representation of the subdivision: DCEL (e.g.)

Event queue: balanced search tree

Beach-line structure: balanced search treeleaves → parabolic arcs

inner nodes → breakpoints

Cross-pointers between related structures

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Data structures

Representation of the subdivision: DCEL (e.g.)

Event queue: balanced search tree

Beach-line structure: balanced search treeleaves → parabolic arcs

inner nodes → breakpoints

Cross-pointers between related structures

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Data structures

Representation of the subdivision: DCEL (e.g.)

Event queue: balanced search tree

Beach-line structure: balanced search treeleaves → parabolic arcs

inner nodes → breakpoints

Cross-pointers between related structures

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Data structures

Representation of the subdivision: DCEL (e.g.)

Event queue: balanced search tree

Beach-line structure: balanced search treeleaves → parabolic arcs

inner nodes → breakpoints

Cross-pointers between related structures

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Data structures

Representation of the subdivision: DCEL (e.g.)

Event queue: balanced search tree

Beach-line structure: balanced search treeleaves → parabolic arcs

inner nodes → breakpoints

Cross-pointers between related structures

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

DCEL of a Voronoi diagram?

A Voronoi diagram includes unbounded edges

As such, it cannot be represented by a DCEL

This is not an issue during construction:efficient access to the relevant itemsis guaranteed via the beach-line structure

However: bounding box to complete the DCEL

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

DCEL of a Voronoi diagram?

A Voronoi diagram includes unbounded edges

As such, it cannot be represented by a DCEL

This is not an issue during construction:efficient access to the relevant itemsis guaranteed via the beach-line structure

However: bounding box to complete the DCEL

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

DCEL of a Voronoi diagram?

A Voronoi diagram includes unbounded edges

As such, it cannot be represented by a DCEL

This is not an issue during construction:efficient access to the relevant itemsis guaranteed via the beach-line structure

However: bounding box to complete the DCEL

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

DCEL of a Voronoi diagram?

A Voronoi diagram includes unbounded edges

As such, it cannot be represented by a DCEL

This is not an issue during construction:efficient access to the relevant itemsis guaranteed via the beach-line structure

However: bounding box to complete the DCEL

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

DCEL of a Voronoi diagram?

A Voronoi diagram includes unbounded edges

As such, it cannot be represented by a DCEL

This is not an issue during construction:efficient access to the relevant itemsis guaranteed via the beach-line structure

However: bounding box to complete the DCEL

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Tree structure representing the beach line

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p

1

p1:p

2

p2:p

3

p3:p

4

pointers to andfrom event queue

pointerto DCEL

pointerto DCEL

pointerto DCEL

pointerto DCEL

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Nodes of the beach-line structures

Leaves: parabolic arcsrepresented by related sites

Inner nodes: breakpointsrepresented by pairs of sites

items and (inner node’s) pairsare sorted from bottom to top

parabolae (equations)are not stored explicitly

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Nodes of the beach-line structures

Leaves: parabolic arcsrepresented by related sites

Inner nodes: breakpointsrepresented by pairs of sites

items and (inner node’s) pairsare sorted from bottom to top

parabolae (equations)are not stored explicitly

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Nodes of the beach-line structures

Leaves: parabolic arcsrepresented by related sites

Inner nodes: breakpointsrepresented by pairs of sites

items and (inner node’s) pairsare sorted from bottom to top

parabolae (equations)are not stored explicitly

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Nodes of the beach-line structures

Leaves: parabolic arcsrepresented by related sites

Inner nodes: breakpointsrepresented by pairs of sites

items and (inner node’s) pairsare sorted from bottom to top

parabolae (equations)are not stored explicitly

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Nodes of the beach-line structures

Leaves: parabolic arcsrepresented by related sites

Inner nodes: breakpointsrepresented by pairs of sites

items and (inner node’s) pairsare sorted from bottom to top

parabolae (equations)are not stored explicitly

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Extra pointers to DCEL half-edges

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Extra pointers to the queued circle events

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

nil

nil

nil

nil

q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Accessing the beach-line: new sites

Arc (breakpoint)to the left of a new site?

At inner nodes y -testof site against breakpoint

Computed in O(1) from threesites and sweep-line position

Determination of arc/breakpointin O( logn )

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Accessing the beach-line: new sites

Arc (breakpoint)to the left of a new site?

At inner nodes y -testof site against breakpoint

Computed in O(1) from threesites and sweep-line position

Determination of arc/breakpointin O( logn )

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Accessing the beach-line: new sites

Arc (breakpoint)to the left of a new site?

At inner nodes y -testof site against breakpoint

Computed in O(1) from threesites and sweep-line position

Determination of arc/breakpointin O( logn )

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Accessing the beach-line: new sites

Arc (breakpoint)to the left of a new site?

At inner nodes y -testof site against breakpoint

Computed in O(1) from threesites and sweep-line position

Determination of arc/breakpointin O( logn )

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Accessing the beach-line: new sites

Arc (breakpoint)to the left of a new site?

At inner nodes y -testof site against breakpoint

Computed in O(1) from threesites and sweep-line position

Determination of arc/breakpointin O( logn )

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

p1

p2

p3

p4

p2:p1

p1:p2

p2:p3

p3:p4

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Items of the event queue

Site events: representedby the sites, of course

Circle events: represented bythe rightmost point of the circle. . .

. . . and holding a referenceto the vanishing arc’s leaf

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Items of the event queue

Site events: representedby the sites, of course

Circle events: represented bythe rightmost point of the circle. . .

. . . and holding a referenceto the vanishing arc’s leaf

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Items of the event queue

Site events: representedby the sites, of course

Circle events: represented bythe rightmost point of the circle. . .

. . . and holding a referenceto the vanishing arc’s leaf

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Items of the event queue

Site events: representedby the sites, of course

Circle events: represented bythe rightmost point of the circle. . .

. . . and holding a referenceto the vanishing arc’s leaf

C. Mirolo Voronoi Diagrams

p1

p2

p3

p4

β1

β2

β3

β4

β5

p2

q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Potential circle events

At each occurrence of a site/circle event the beach-line’stopological structure is subjected to changes

Potential circle events are to be found in connectionwith (new) triples of consecutive arcs. . .

. . . provided the breakpoints move along bisectorsthat converge on the right side of the beach-line

A triple may however disappearbefore the circle event actually occurs: false alarm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Potential circle events

At each occurrence of a site/circle event the beach-line’stopological structure is subjected to changes

Potential circle events are to be found in connectionwith (new) triples of consecutive arcs. . .

. . . provided the breakpoints move along bisectorsthat converge on the right side of the beach-line

A triple may however disappearbefore the circle event actually occurs: false alarm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Potential circle events

At each occurrence of a site/circle event the beach-line’stopological structure is subjected to changes

Potential circle events are to be found in connectionwith (new) triples of consecutive arcs. . .

. . . provided the breakpoints move along bisectorsthat converge on the right side of the beach-line

A triple may however disappearbefore the circle event actually occurs: false alarm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Potential circle events

At each occurrence of a site/circle event the beach-line’stopological structure is subjected to changes

Potential circle events are to be found in connectionwith (new) triples of consecutive arcs. . .

. . . provided the breakpoints move along bisectorsthat converge on the right side of the beach-line

A triple may however disappearbefore the circle event actually occurs: false alarm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Potential circle events

At each occurrence of a site/circle event the beach-line’stopological structure is subjected to changes

Potential circle events are to be found in connectionwith (new) triples of consecutive arcs. . .

. . . provided the breakpoints move along bisectorsthat converge on the right side of the beach-line

A triple may however disappearbefore the circle event actually occurs: false alarm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

Vertex v → triple pi , pj , pk

P ∩ boundaryCP(v) = pi , pj , pk

q /∈ pi , pj , pk : rightmost point on boundaryCP(v)

q, pi , pj , pk : clockwise around v

(Special cases are omitted here)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

Vertex v → triple pi , pj , pk

P ∩ boundaryCP(v) = pi , pj , pk

q /∈ pi , pj , pk : rightmost point on boundaryCP(v)

q, pi , pj , pk : clockwise around v

(Special cases are omitted here)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

Vertex v → triple pi , pj , pk

P ∩ boundaryCP(v) = pi , pj , pk

q /∈ pi , pj , pk : rightmost point on boundaryCP(v)

q, pi , pj , pk : clockwise around v

(Special cases are omitted here)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

Vertex v → triple pi , pj , pk

P ∩ boundaryCP(v) = pi , pj , pk

q /∈ pi , pj , pk : rightmost point on boundaryCP(v)

q, pi , pj , pk : clockwise around v

(Special cases are omitted here)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

Vertex v → triple pi , pj , pk

P ∩ boundaryCP(v) = pi , pj , pk

q /∈ pi , pj , pk : rightmost point on boundaryCP(v)

q, pi , pj , pk : clockwise around v

(Special cases are omitted here)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

Vertex v → triple pi , pj , pk

P ∩ boundaryCP(v) = pi , pj , pk

q /∈ pi , pj , pk : rightmost point on boundaryCP(v)

q, pi , pj , pk : clockwise around v

(Special cases are omitted here)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

. . . Or site events horizontally aligned with a breakpoint

P ∩ boundaryCP(v) = pi , pj , pk

q = pk : rightmost point on boundaryCP(v)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

. . . Or site events horizontally aligned with a breakpoint

P ∩ boundaryCP(v) = pi , pj , pk

q = pk : rightmost point on boundaryCP(v)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

. . . Or site events horizontally aligned with a breakpoint

P ∩ boundaryCP(v) = pi , pj , pk

q = pk : rightmost point on boundaryCP(v)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

All Voronoi vertices are detected by processing circle events. . .

. . . Or site events horizontally aligned with a breakpoint

P ∩ boundaryCP(v) = pi , pj , pk

q = pk : rightmost point on boundaryCP(v)

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

“Just before” (a tiny amount)the sweep line meets q . . .

Let C′ be the circle through pi , pjand tangent to the sweep line

C′ doesn’t containother sites inside or on it

Then arc(pj) has length 6= 0and is adjacent to arc(pi)(at a point on a Voronoi edge)

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

“Just before” (a tiny amount)the sweep line meets q . . .

Let C′ be the circle through pi , pjand tangent to the sweep line

C′ doesn’t containother sites inside or on it

Then arc(pj) has length 6= 0and is adjacent to arc(pi)(at a point on a Voronoi edge)

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

“Just before” (a tiny amount)the sweep line meets q . . .

Let C′ be the circle through pi , pjand tangent to the sweep line

C′ doesn’t containother sites inside or on it

Then arc(pj) has length 6= 0and is adjacent to arc(pi)(at a point on a Voronoi edge)

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

“Just before” (a tiny amount)the sweep line meets q . . .

Let C′ be the circle through pi , pjand tangent to the sweep line

C′ doesn’t containother sites inside or on it

Then arc(pj) has length 6= 0and is adjacent to arc(pi)(at a point on a Voronoi edge)

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

“Just before” (a tiny amount)the sweep line meets q . . .

Let C′ be the circle through pi , pjand tangent to the sweep line

C′ doesn’t containother sites inside or on it

Then arc(pj) has length 6= 0and is adjacent to arc(pi)(at a point on a Voronoi edge)

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

“Just before” (a tiny amount)the sweep line meets q . . .

Let C′ be the circle through pi , pjand tangent to the sweep line

C′ doesn’t containother sites inside or on it

Then arc(pj) has length 6= 0and is adjacent to arc(pi)(at a point on a Voronoi edge)

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

For similar reasons, (the same)arc(pj) is adjacent to arc(pk )

So, “just before”the sweep line meets q . . .

arc(pi), arc(pj) and arc(pk )are adjacent on the beach-line

Therefore, the circle event at qmust be in the event queue

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

For similar reasons, (the same)arc(pj) is adjacent to arc(pk )

So, “just before”the sweep line meets q . . .

arc(pi), arc(pj) and arc(pk )are adjacent on the beach-line

Therefore, the circle event at qmust be in the event queue

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

For similar reasons, (the same)arc(pj) is adjacent to arc(pk )

So, “just before”the sweep line meets q . . .

arc(pi), arc(pj) and arc(pk )are adjacent on the beach-line

Therefore, the circle event at qmust be in the event queue

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

For similar reasons, (the same)arc(pj) is adjacent to arc(pk )

So, “just before”the sweep line meets q . . .

arc(pi), arc(pj) and arc(pk )are adjacent on the beach-line

Therefore, the circle event at qmust be in the event queue

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Detection of Voronoi vertices

Voronoi vertices that are detected by processing circle events

For similar reasons, (the same)arc(pj) is adjacent to arc(pk )

So, “just before”the sweep line meets q . . .

arc(pi), arc(pj) and arc(pk )are adjacent on the beach-line

Therefore, the circle event at qmust be in the event queue

C. Mirolo Voronoi Diagrams

pi

pk

pj

v q

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Fortune’s plane sweep

input: set of sites P = p1,p2, . . . pn 1. the event queue Q is initialized with all site events;2. the beach-line tree T and the Voronoi DCEL V are empty;3. while Q 6= ∅ do4. remove from Q the leftmost event ev(q);5. if ev(q = pi) is a site event then6. process site event at pi ;

else // ev(q) is a circle event7. process circle event at q;

endwhile;// T ’s inner nodes refer to unbounded edges of Vor(P)

8. V is finalized within a bounding box

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Fortune’s plane sweep

input: set of sites P = p1,p2, . . . pn 1. the event queue Q is initialized with all site events;2. the beach-line tree T and the Voronoi DCEL V are empty;3. while Q 6= ∅ do4. remove from Q the leftmost event ev(q);5. if ev(q = pi) is a site event then6. process site event at pi ;

else // ev(q) is a circle event7. process circle event at q;

endwhile;// T ’s inner nodes refer to unbounded edges of Vor(P)

8. V is finalized within a bounding box

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Fortune’s plane sweep

input: set of sites P = p1,p2, . . . pn 1. the event queue Q is initialized with all site events;2. the beach-line tree T and the Voronoi DCEL V are empty;3. while Q 6= ∅ do4. remove from Q the leftmost event ev(q);5. if ev(q = pi) is a site event then6. process site event at pi ;

else // ev(q) is a circle event7. process circle event at q;

endwhile;// T ’s inner nodes refer to unbounded edges of Vor(P)

8. V is finalized within a bounding box

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Fortune’s plane sweep

input: set of sites P = p1,p2, . . . pn 1. the event queue Q is initialized with all site events;2. the beach-line tree T and the Voronoi DCEL V are empty;3. while Q 6= ∅ do4. remove from Q the leftmost event ev(q);5. if ev(q = pi) is a site event then6. process site event at pi ;

else // ev(q) is a circle event7. process circle event at q;

endwhile;// T ’s inner nodes refer to unbounded edges of Vor(P)

8. V is finalized within a bounding box

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else // assume pi not horizontally aligned with a breakpoint3. search T for the arc β∗ to the left of pi ;4. if β∗ points to a circle event then delete it // false alarm5. update T by splitting β∗ and inserting β in-between

// how in more detail?6. add to V a new edge to be traced by β’s breakpoints

// twin half-edge records to be completed later7. test the new triples including β as first/last arc

to detect potential circle events and add them to Q;// if β is the middle arc the breakpoints diverge

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing circle event at q

1. update T by deleting the vanishing arc β∗ (leaf)pointed to by ev(q); // how in more detail?

2. delete from Q possible circle events pointed to by the arcs(previously) adjacent to β∗; // such events would involve β∗

3. add to V a new vertex = circle center and a new edge to betraced by the breakpoint between the arcs adjacent to β∗;// everything must be linked appropriately

4. test the new triples with the arcs adjacent to β∗ as middlearcs to detect potential circle events and add them to Q;// cross-pointers are set appropriately

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi (continued)

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else if pi horizontally aligned with a breakpoint3. . . .4. . . . // related reasoning

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi (continued)

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else if pi horizontally aligned with a breakpoint3. . . .4. . . . // related reasoning

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Processing site event at pi (continued)

1. if T = ∅ then2. insert an arc β (leaf) for pi into T ;

else if pi horizontally aligned with a breakpoint3. . . .4. . . . // related reasoning

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Site events: n

Processed circle events (→ vertices): < 2n

False alarms: O( n )

at most one/two false alarms are deletedwhile processing actual site/circle events

Max size of T , Q, V : O( n )

Storage : O( n )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Site events: n

Processed circle events (→ vertices): < 2n

False alarms: O( n )

at most one/two false alarms are deletedwhile processing actual site/circle events

Max size of T , Q, V : O( n )

Storage : O( n )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Site events: n

Processed circle events (→ vertices): < 2n

False alarms: O( n )

at most one/two false alarms are deletedwhile processing actual site/circle events

Max size of T , Q, V : O( n )

Storage : O( n )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Site events: n

Processed circle events (→ vertices): < 2n

False alarms: O( n )

at most one/two false alarms are deletedwhile processing actual site/circle events

Max size of T , Q, V : O( n )

Storage : O( n )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Site events: n

Processed circle events (→ vertices): < 2n

False alarms: O( n )

at most one/two false alarms are deletedwhile processing actual site/circle events

Max size of T , Q, V : O( n )

Storage : O( n )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Event processing steps: O( n )

Basic operations on the beach-line tree T : O( logn )

Basic operations on the event queue Q: O( logn )

Local operations on the DCEL V : O( 1 )

Overall runtime costs : O( n logn )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Event processing steps: O( n )

Basic operations on the beach-line tree T : O( logn )

Basic operations on the event queue Q: O( logn )

Local operations on the DCEL V : O( 1 )

Overall runtime costs : O( n logn )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Event processing steps: O( n )

Basic operations on the beach-line tree T : O( logn )

Basic operations on the event queue Q: O( logn )

Local operations on the DCEL V : O( 1 )

Overall runtime costs : O( n logn )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Event processing steps: O( n )

Basic operations on the beach-line tree T : O( logn )

Basic operations on the event queue Q: O( logn )

Local operations on the DCEL V : O( 1 )

Overall runtime costs : O( n logn )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Computation costs

Event processing steps: O( n )

Basic operations on the beach-line tree T : O( logn )

Basic operations on the event queue Q: O( logn )

Local operations on the DCEL V : O( 1 )

Overall runtime costs : O( n logn )

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Degenerate cases

x(pi) = x(pj) :in most cases the processing order does not matter. . .

. . . but specific treatment if they are the first two sites!(horizontal edge, unbounded to the left)

Vertices of degree > 3 → overlapping circle events. . .

. . . post-processing to deal with zero-length edges?

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Degenerate cases

x(pi) = x(pj) :in most cases the processing order does not matter. . .

. . . but specific treatment if they are the first two sites!(horizontal edge, unbounded to the left)

Vertices of degree > 3 → overlapping circle events. . .

. . . post-processing to deal with zero-length edges?

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Degenerate cases

x(pi) = x(pj) :in most cases the processing order does not matter. . .

. . . but specific treatment if they are the first two sites!(horizontal edge, unbounded to the left)

Vertices of degree > 3 → overlapping circle events. . .

. . . post-processing to deal with zero-length edges?

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Degenerate cases

x(pi) = x(pj) :in most cases the processing order does not matter. . .

. . . but specific treatment if they are the first two sites!(horizontal edge, unbounded to the left)

Vertices of degree > 3 → overlapping circle events. . .

. . . post-processing to deal with zero-length edges?

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events may overlap

Circle event: Vertices with degree larger than threeare connected to “coincident” circle events

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events may overlap

Circle event: Vertices with degree larger than threeare connected to “coincident” circle events

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events may overlap

Circle event: Vertices with degree larger than threeare connected to “coincident” circle events

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

beach lineplane sweepdiscussion

Circle events may overlap

Circle event: Vertices with degree larger than threeare connected to “coincident” circle events

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Outline

1 Definition and propertiesconvexity and connectednessstructural complexityvertices and edges

2 Fortune’s algorithmbeach lineplane sweepdiscussion

3 Other approachesdivide et imperaexploiting sites’ distribution

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Shamos & Hoey’s divide-et-impera algorithm

P split into two halves PL and PR

pi ∈ PL, pj ∈ PR ⇒ x(pi) ≤ x(pj)

Recursive computation of Vor(PL) and Vor(PR)

Vor(PL), Vor(PR) are then merged into Vor(P) in O(n)

. . . which results into a O( n logn ) algorithm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Shamos & Hoey’s divide-et-impera algorithm

P split into two halves PL and PR

pi ∈ PL, pj ∈ PR ⇒ x(pi) ≤ x(pj)

Recursive computation of Vor(PL) and Vor(PR)

Vor(PL), Vor(PR) are then merged into Vor(P) in O(n)

. . . which results into a O( n logn ) algorithm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Shamos & Hoey’s divide-et-impera algorithm

P split into two halves PL and PR

pi ∈ PL, pj ∈ PR ⇒ x(pi) ≤ x(pj)

Recursive computation of Vor(PL) and Vor(PR)

Vor(PL), Vor(PR) are then merged into Vor(P) in O(n)

. . . which results into a O( n logn ) algorithm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Shamos & Hoey’s divide-et-impera algorithm

P split into two halves PL and PR

pi ∈ PL, pj ∈ PR ⇒ x(pi) ≤ x(pj)

Recursive computation of Vor(PL) and Vor(PR)

Vor(PL), Vor(PR) are then merged into Vor(P) in O(n)

. . . which results into a O( n logn ) algorithm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Shamos & Hoey’s divide-et-impera algorithm

P split into two halves PL and PR

pi ∈ PL, pj ∈ PR ⇒ x(pi) ≤ x(pj)

Recursive computation of Vor(PL) and Vor(PR)

Vor(PL), Vor(PR) are then merged into Vor(P) in O(n)

. . . which results into a O( n logn ) algorithm

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Merging stage

∃ y -monotone polygonal line s such thatpoints to the left (right) of s are closer to a site of PL (PR)than to any site of PR (PL)

The unbounded edges of s lie on the bisectorsof two sides of convex_hull(P)

Such sides connect convex_hull(PL) and convex_hull(PR)(refer to Preparata & Hong’s convex hull algorithm)

We can start from one of the unbounded edges andtraverse the cells of Vor(PL) and Vor(PR) to build s

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Merging stage

∃ y -monotone polygonal line s such thatpoints to the left (right) of s are closer to a site of PL (PR)than to any site of PR (PL)

The unbounded edges of s lie on the bisectorsof two sides of convex_hull(P)

Such sides connect convex_hull(PL) and convex_hull(PR)(refer to Preparata & Hong’s convex hull algorithm)

We can start from one of the unbounded edges andtraverse the cells of Vor(PL) and Vor(PR) to build s

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Merging stage

∃ y -monotone polygonal line s such thatpoints to the left (right) of s are closer to a site of PL (PR)than to any site of PR (PL)

The unbounded edges of s lie on the bisectorsof two sides of convex_hull(P)

Such sides connect convex_hull(PL) and convex_hull(PR)(refer to Preparata & Hong’s convex hull algorithm)

We can start from one of the unbounded edges andtraverse the cells of Vor(PL) and Vor(PR) to build s

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Merging stage

∃ y -monotone polygonal line s such thatpoints to the left (right) of s are closer to a site of PL (PR)than to any site of PR (PL)

The unbounded edges of s lie on the bisectorsof two sides of convex_hull(P)

Such sides connect convex_hull(PL) and convex_hull(PR)(refer to Preparata & Hong’s convex hull algorithm)

We can start from one of the unbounded edges andtraverse the cells of Vor(PL) and Vor(PR) to build s

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Merging stage

∃ y -monotone polygonal line s such thatpoints to the left (right) of s are closer to a site of PL (PR)than to any site of PR (PL)

The unbounded edges of s lie on the bisectorsof two sides of convex_hull(P)

Such sides connect convex_hull(PL) and convex_hull(PR)(refer to Preparata & Hong’s convex hull algorithm)

We can start from one of the unbounded edges andtraverse the cells of Vor(PL) and Vor(PR) to build s

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Merging stage

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Merging stage

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Remarks

Notice that the overall size of Vor(PL) ∪ Vor(PR) is O(n)

The convex hull of the site subsets processed recursivelycan be build accordingly via Shamos & Hoey’s technique

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Remarks

Notice that the overall size of Vor(PL) ∪ Vor(PR) is O(n)

The convex hull of the site subsets processed recursivelycan be build accordingly via Shamos & Hoey’s technique

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Bentley, Weide & Yao (1980)

Sites of P uniformly distributed in a bounded box

Vor(P) can be constructed in O( n ) expected time

C. Mirolo Voronoi Diagrams

Definition and propertiesFortune’s algorithmOther approaches

divide et imperaexploiting sites’ distribution

Bentley, Weide & Yao (1980)

Sites of P uniformly distributed in a bounded box

Vor(P) can be constructed in O( n ) expected time

C. Mirolo Voronoi Diagrams

References

References

S. Fortune (1987)A Sweepline Algorithm for Voronoi DiagramsAlgorithmica, 2(1)

L.J. Guibas & J. Stolfi (1988)Ruler, Compass and ComputerTheoretical Foundations of Computer Graphics and CADNATO ASI Series, 40

C. Mirolo Voronoi Diagrams

References

References

M.I. Shamos & S.D. Hoey (1975)Closest-point ProblemsProc. of the IEEE Symposiumon Foundations of Computer Science

J.L. Bentley, B.W. Weide & A.C. Yao (1980)Optimal Expected-Time Algorithmsfor Closest Point ProblemsACM Transactions on Mathematical Software, 6(4)

C. Mirolo Voronoi Diagrams