# Voronoi Diagram ```Voronoi Diagram
Presenter: GI1 11號 蔡逸凡
Reference: Computational Geometry ch7
ISBN: 3-540-65620-0
Outline






Introduction
Definitions
Incremental Algorithm
Fortune’s Algorithm
Hardware Algorithm
Applications
7-11 Shoppers …
Where do people go to shop?
Which location is suitable for new
store?
Assumptions
price is the same at every site
cost = price + transportation
transportation = (Euclidean distance)  (price per unit distance)
consumers try to minimize the cost.
Figure 7.1
The trading areas of the capitals
of the twelve provinces in the
Netherlands, as predicted by the
Voronoi assignment model
Introduction (cont)
 Fire observation towers
 Towers on fire
 Facility location: center of largest
empty circle
 Path planning: stay as far away from
all obstacles as possible
Definitions
 Vor(P) [Voronoi diagram of P]:
subdivision of the plane into n cells,
one for each site in P, P  p1 , p2 ,..., pn 
 [Voronoi cell of pi]:the cell of Vor(P)
that corresponds to a site pi
V ( pi )  {x : x  pi  x  p j , j  i}
 V(P): the set of all points that have
more than one nearest neighbor
Definition (Cont)
bisector
h (p, q)
p3
r  hq, p 
distr , q   distr , p 
p2
p1
h (q, p)
Two sites
Circumcircle of p1p2p3
Three sites
Observation 7.1
V  pi   
1 j n ,
j i
h pi , p j 
Theorem 7.2
 Let P be a set of n point sites in the plane. If all the
sites are collinear then Vor(P) consists of n-1
parallel lines. Otherwise, Vor(P) is connected and
its edges are either segments or half-lines.
Theorem 7.3
 For n≧3, the number of vertices in the
Voronoi diagram of a set of n point sites in
the plane is at most 2n-5 and the number
of edges is at most 3n-6.
Give a bound to
number of Voronoi
edges and
vertices
CP(q):
largest empty circle of q w.r.t. P
 To characterize which bisectors and
intersections define features of the
Voronoi diagram we make the
following:
not contain any
site of P
Theorem 7.4
 For the Voronoi
diagram Vor(P) of a set
of points P the following
holds:
(i) A point q is a vertex
of Vor(P) if and only if
its largest CP(q) empty
circle contains three or
more sites on its
boundary.
pi
q
pj
pk
Theorem 7.4 (Cont)
(ii) The bisector
between sites pi and
pj defines an edge of
Vor(P) if and only if
there is a point q on
the bisector such
that CP(q) contains
both pi and pj on its
boundary but no
other site.
pi
q
pj
Theorem 7.4 (Cont)
(ii) The bisector
between sites pi and
pj defines an edge of
Vor(P) if and only if
there is a point q on
the bisector such
that CP(q) contains
both pi and pj on its
boundary but no
other site.
pk
pi
q
pj
distq, pi   distq, pi   distq, pk 
for all 1  k  n
Incremental Algorithm
 Suppose that we have already built the Voronoi
diagram Vp-1, and would like to add a new sites sp.
First, find the site, say si, whose Voronoi polygon
contains sp, and draw the perpendicular bisector
between sp and si, denoted by B(sp, si).
 The bisector crosses the boundary of V(si) at two
points, point x1 and point x2. Site sp is to the left of
the directed line segment x1x2. The line segment
x1x2 divides the Voronoi polygon V(si) into two
pieces, the one on the left belonging to the Voronoi
polygon of sp. Thus, we get a Voronoi edge on the
boundary of the Voronoi polygon of si.
Incremental Algorithm-2
 Starting with the edge x1x2, expand the boundary
of the Voronoi polygon of sl by the following
procedure. The B(si, sl) crosses the boundary of
V(si) at x2, entering the adjacent Voronoi polygon,
say V(sj). Therefore, next draw the B(si, sj), and
find the point, x3, at which the bisector crosses the
boundary of V(sj). Similarly, find the sequence of
segments of perpendicular bisectors of s and the
neighboring sites until we reach the starting point
x1.
 Let this sequence be (x1x2, x2x3, …, xm-1xm, xmx1).
This sequence forms a CCW boundary of the
Voronoi polygon of the new site s.
 Finally, we delete from Vp-1 the substructure inside
the new Voronoi polygon, and thus get Vp.
Example
Example
Example
Example
Example
O(n) per point insertion
Total complexity: O(n2)
Complexity
 The method describe before:
per Voronoi cell: On log n
total: On2 log n
 plane sweep algorithm—
Fortune’s algorithm: On log n
Fortune’s Algorithm (1985)
 Use plane sweep to explore the
Voronoi structure
Sweep line
The loci of equal distance points
between the focus and the
directrix is a parabola
Fortune (cont)
 As the sweep line moves, more parabolas got
generated
 The intersection between parabola is the trace of
equal distance point between the two sites
Beach line: monotone union of parabolic arcs
Break point: where two arcs meet
Site Event (Voronoi Edge)
 The branch starts when the sweep line first touches
the site, forming a degenerate parabola (a line)
Circle Event (Voronoi Vertex)
 The Voronoi edge comes to an end when the
circumcircle pass the sweep line
 At such points, the corresponding arc got removed
from the beach line
Plane Sweep Algorithm (Cont)
 l :sweep line
 l :The closed half-plane above l

q l
 12
q
s1
s3
s2
q
Plane Sweep Algorithm (Cont)
beach line
breakpoint
Observation 7.5
 The beach line is x-monotone, that is,
every vertical line intersects it in
exactly one point.
p1
p4
p3
p2
Process – Site event
 When reaching a new site, we consider the
events where a new arc appears on the
beach line
Process – Site event (Cont)
 What happen to
the Voronoi
diagram at a site
event?
Lemma 7.6
 The only way in which a new arc can
appear on the beach line is through a
site event.
Process – Circle event
Lemma 7.7
 The only way in which an existing arc
can disappear from the beach line is
through a circle event.
The detection of circle event
 Does not define a
potential circle
event
 False alarm
 This circle event helps to terminate the
Voronoi edges
Sweep line intersects the circumcircle
 This, however, does not generate circle
event: cir.circle does not intersect sweep
line [site coincide w/ circle event]
Summary
 Site event: encounter a new site
- get new arc
 Circle event:
 A new triple has converging breakpoint
– has a circle event insert into the event
queue
 The new arc is in the middle
– never cause
 Check disappear triples that have circle event
– false alarm, delete it from event queue
Structure
 Event queue: the priority of an event
is its y-coordinate
 Site event: store the site
 Circle event: lowest point of the circle
 Doubly-connected edge list
 Binary search tree T
Structure (Cont)
Binary search tree T
breakpoint
Site that
define the arc
Example 1
p3
p1
p2
Q={p1,p2,p3}
Q={p2,p3}
D={}
D={}
T:
p1
Example 1 (Cont)
Q={p3}
D={e1}
T: &lt;p2,p1&gt;-&gt;e1
p2
p1
Example 1 (Cont)
Q={}
T:
&lt;p1,p3&gt;-&gt;e2
D={e1,e2}
e1&lt;-&lt;p2,p1&gt;
p2
p1
p3
Example 1 (Cont)
Q={c1}
&lt;p1,p3&gt;-&gt;e2
T:
D={e1,e2}
e1&lt;-&lt;p2,p1&gt;
p2
p1
c1
p3
Example 1 (Cont)
Q={}
T:
D={e1,e2,e3}
e3&lt;-&lt;p2,p3&gt;
p2
p3
Example 1 (Cont)
Q={}
T:
D={e1,e2,e3}
e3&lt;-&lt;p2,p3&gt;
p2
A visual implementation of
Fortune's Voronoi algorithm
p3
Example 2
Q={p1,p2,p3,p4}
Q={p2,p3,p4}
D={}
D={}
T:
p1
Example 2 (Cont)
Q={p3,p4}
T:
&lt;p1,p2&gt;-&gt;e1
D={e1}
p1
p2
Example 2 (Cont)
Q={p4}
T:
&lt;p1,p2&gt;-&gt;e1
D={e1,e2}
e2&lt;-&lt;p3,p1&gt;
p3
p1
p2
Q={c1,p4} T:
&lt;p1,p2&gt;-&gt;e1
D={e1,e2}
e2&lt;-&lt;p3,p1&gt;
p3
p1
c1
p2
Example 2 (Cont)
Q={p4}
T:
D={e1,e2,e3} e3&lt;-&lt;p3,p2&gt;
p3
p2
Q={}
T:
&lt;p4,p2&gt;-&gt;e5
D={e1,e2,e3
e4,e5}
e4&lt;-&lt;p3,p4&gt;
p3
p4
p2
Example 2 (Cont)
Q={}
T:
&lt;p4,p2&gt;-&gt;e5
D={e1,e2,e3
e4,e5}
e4&lt;-&lt;p3,p4&gt;
p3
p4
p2
Example 3
Q={p1,p2,p3,p4}
Q={p2,p3,p4}
D={}
D={}
T:
p1
Example 3 (Cont)
Q={p3,p4}
T:
&lt;p2,p1&gt;-&gt;e1
D={e1}
p2
p1
Example 3 (Cont)
Q={p4}
T:
&lt;p1,p3&gt;-&gt;e2
D={e1,e2}
e1&lt;-&lt;p2,p1&gt;
p2
p1
p3
Q={p4,c1} T:
&lt;p1,p3&gt;-&gt;e2
D={e1,e2}
e1&lt;-&lt;p2,p1&gt;
p2
p1
c1
p3
Example 3 (Cont)
Example 3 (Cont)
Q={p4}
&lt;p1,p3&gt;-&gt;e2
T:
D={e1,e2}
e1&lt;-&lt;p2,p1&gt;
p2
p1
p3
Example 3 (Cont)
Example 3 (Cont)
Proofs
Theorem 7.2 (Cont)
 Proof:
(1) Collinear: Vor(P) consists of n-1
parallel lines
．．．
1
2
3
n-1
n
n – 1 parallel lines
Theorem 7.2 (Cont)
 Proof:
(2) Vor(P) is connected
and its edges are either
segments or half-lines.
→ suppose : an edge e of
Vor(P) that is a full line
f
Theorem 7.2 (Cont)
 Proof:
(2) Vor(P) is connected
and its edges are either
segments or half-lines.
→ suppose : an edge e of
Vor(P) that is a full line
Theorem 7.3 (Cont)
Euller' s formula : mv  me  m f  2
nv  1  ne  n  2
2ne  3nv  1
(7.1)
(7.2)
from (7.2)得 :
2
( 7.1)
ne  1 代入

 ne  3n  6
3
3
3 代入 ( 7.1)
ne  nv   
 nv  2n  5
2
2
nv 
Lemma 7.6 (Cont)
 Proof:
 First possibility: suppose an already existing
parabola  j break through the beach line,
is defined by a site p j
Lemma 7.6 (Cont)
 Proof:
 Let l y denote the y-coordinate of the
sweep line
p j  p j,x , p j, y
 12
 The parabola  j is given by:

j  y 

1
2 p j , y

x
l 
y
2
 2 p j , x x  p 2j , x  p 2j , y  l y2

Lemma 7.6 (Cont)
 Proof:
 Second possibility:  j appear in between
two arcs i and  k
Lemma 7.6 (Cont)
 Proof:
Lemma 7.6 (Cont)
 Consequence:
The beach line consists of at most
2n-1 parabolic arcs.
```