Definition and properties Fortune’s algorithm Other approaches Voronoi Diagrams Claudio Mirolo Dip. di Scienze Matematiche, Informatiche e Fisiche Università di Udine, via delle Scienze 206 – Udine [email protected]Computational Geometry www.dimi.uniud.it/claudio C. Mirolo Voronoi Diagrams
275
Embed
Definition and properties Other approachesclaudio.mirolo/... · Definition and properties Fortune’s algorithm Other approaches convexity and connectedness structural complexity
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Definition and propertiesFortune’s algorithmOther approaches
Voronoi Diagrams
Claudio Mirolo
Dip. di Scienze Matematiche, Informatiche e FisicheUniversità di Udine, via delle Scienze 206 – Udine
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