67
Voronoi Diagram Presenter: GI1 11 號 號號號 Reference: Computational Geometry ch7 ISBN: 3-540-65620-0

Voronoi Diagram Presenter: GI1 11 號 蔡逸凡 Reference: Computational Geometry ch7 ISBN: 3-540-65620-0

Embed Size (px)

Citation preview

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 …

Figure 7.1The trading areas of the capitals of the twelve provinces in the Netherlands, as predicted by the Voronoi assignment model

Assumptions

price is the same at every site

cost = price + transportation

transportation = (Euclidean distance) (price per unit distance)

consumers try to minimize the cost.

Where do people go to shop?Which location is suitable for new store?

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,

[Voronoi cell of pi]:the cell of Vor(P) that corresponds to a site pi

V(P): the set of all points that have more than one nearest neighbor

npppP ,...,, 21

},:{)( ijpxpxxpV jii

Definition (Cont)

h (p, q)

h (q, p)

bisector

prdistqrdist

pqhr

,,

,

Two sites Three sites

p1

p3

p2

Circumcircle of p1p2p3

Observation 7.1

ijnj

jii pphpV

,1

,

Theorem 7.2 Let P be a set of n point sites in the plane. If all the sites a

re 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 ed

ges 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 V

or(P) of a set of points P the following holds:

(i) A point q is a vertexof Vor(P) if and only if its largest CP(q) empty circle contains three or more sites on its boundary.

qip

jp

kp

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.

q

ip

jp

Theorem 7.4 (Cont)

nk1allfor

pqdistpqdistpqdist kii

,,,

ip

jp

kp

q

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

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 Voro

noi 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 insertionTotal complexity: O(n2)

Complexity

The method describe before:per Voronoi cell:total:

plane sweep algorithm— Fortune’s algorithm: nnO log

nnO log

nnO 2 log

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 arcsBreak 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 circumcircl

e pass the sweep line At such points, the corresponding arc got removed from

the beach line

Plane Sweep Algorithm (Cont) :sweep line :The closed half-plane above 12

l

qs1

s2

s3q

ll

lq

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

p2

p3

p4

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)

Site that define the arc

breakpoint

Binary search tree T

Example 1

Q={p1,p2,p3}

D={}

Q={p2,p3}

D={}

p1

p2

p3

p1

T:

Example 1 (Cont)

Q={p3}

D={e1}

T:

p2 p1

<p2,p1>->e1

Example 1 (Cont)

Q={}

D={e1,e2}

T: <p1,p3>->e2

p3p2 p1

e1<-<p2,p1>

Example 1 (Cont)

Q={c1}

D={e1,e2}

T: <p1,p3>->e2

c1

p3p2 p1

e1<-<p2,p1>

Example 1 (Cont)

Q={}

D={e1,e2,e3

}

T:

p2 p3

e3<-<p2,p3>

Example 1 (Cont)

Q={}

D={e1,e2,e3

}

T:

p2 p3

e3<-<p2,p3>

A visual implementation of Fortune's Voronoi algorithm

Example 2

Q={p1,p2,p3,p4}

D={}

Q={p2,p3,p4}

D={}

p1

T:

Example 2 (Cont)

Q={p3,p4}

D={e1}

p1 p2

<p1,p2>->e1T:

Example 2 (Cont)

Q={p4}

D={e1,e2}

T: <p1,p2>->e1

p2p3 p1

e2<-<p3,p1>

Q={c1,p4}

D={e1,e2}

T: <p1,p2>->e1

c1

p2p3 p1

e2<-<p3,p1>

Example 2 (Cont)

Q={p4}

D={e1,e2,e3

}

T:

p3 p2

e3<-<p3,p2>Q={}

D={e1,e2,e3

e4,e5}

T:<p4,p2>->e5

p2p3 p4

e4<-<p3,p4>

Example 2 (Cont)

Q={}

D={e1,e2,e3

e4,e5}

T:<p4,p2>->e5

p2p3 p4

e4<-<p3,p4>

Example 3

Q={p1,p2,p3,p4}

D={}

p1

T:Q={p2,p3,p4}

D={}

Example 3 (Cont)

Q={p3,p4}

D={e1}

p2 p1

<p2,p1>->e1T:

Example 3 (Cont)

Q={p4}

D={e1,e2}

T: <p1,p3>->e2

p3p2 p1

e1<-<p2,p1>

Q={p4,c1}

D={e1,e2}

T: <p1,p3>->e2

c1

p3p2 p1

e1<-<p2,p1>

Example 3 (Cont)

Example 3 (Cont)

Q={p4}

D={e1,e2}

T: <p1,p3>->e2

p3p2 p1

e1<-<p2,p1>

Example 3 (Cont)

Example 3 (Cont)

Proofs

Theorem 7.2 (Cont) Proof:

(1) Collinear: Vor(P) consists of n-1 parallel lines

n – 1 parallel lines

...1 2 3 n - 1 n

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)

2mmm:formula sEuller' fev

522

3

2

3

6313

2

:得 (7.2)

(7.2) 132n

(7.1) 21

)1.7(

)1.7(

e

nnnn

nnnn

from

n

nnn

v代入

ve

e代入

ev

v

ev

Lemma 7.6 (Cont) Proof:

First possibility: suppose an already existing parabola break through the beach line, is defined by a site

jjp

Lemma 7.6 (Cont)

Proof: Let denote the y-coordinate of the

sweep line 12 The parabola is given by:

2y2yj

2xjxj

2

yyjj lppxp2x

lp2

1y

,,,

,

yl

yjxjj ppp ,, ,j

Lemma 7.6 (Cont) Proof:

Second possibility: appear in between two arcs and ki

j

Lemma 7.6 (Cont) Proof:

Lemma 7.6 (Cont)

Consequence:The beach line consists of at most 2n-1 parabolic arcs.