Definition and properties Other approachesclaudio.mirolo/... · Definition and properties...
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
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 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