VORONOI DIAGRAM
Vera Sacrist
an
Computational Geometry
Facultat dInform`atica de Barcelona
Universitat Polit`ecnica de Catalunya
Storing the Voronoi diagram
Possible options, advantages and disadvantages
For each site pi , storing the sorted list of vertices and edges of its Voronoi region, as well as
the sorted list of its neighbors, etc.
For each site pi , storing the sorted list of vertices and edges of its Voronoi region, as well as
the sorted list of its neighbors, etc.
For each site pi , storing the sorted list of vertices and edges of its Voronoi region, as well as
the sorted list of its neighbors, etc.
The data structure which is most frequently used to store Voronoi diagrams is the DCEL (doubly
connected edge list).
The DCEL is also used to store plane partitions, polyhedra, meshes, etc.
4 3
2
1
2
4 3
2
3 1 6
1 5
4
2
4
1
5
3
6
7
2
4 3
2
3 1 6
1 5
4
2
4
1
9
8 5
3
6
7
2
4 3
2
3 1 6
e 1 5
4
2
4
1
9
8 5
3
6
vE 7
2
4 3
2
3 1 6
e 1 5
4
2
4
vB 1
9
8 5
3
6
vE 7
2
4 3
fL 2
3 1 6
e 1 5
fR 4
2
4
vB 1
9
8 5
3
6
vE 7
eN 2
4 3
fL 2
3 1 6
e 1 5
fR 4
2
4
vB 1
9
8 5
3
6
vE 7
eN 2
4 3
fL 2
3 1 6
e 1 5
fR 4
2
4
eP vB 1
9
8 5
e0
e
e vB , fR , eN , e0
e0 vB , fR , eN , e
e0
e
e vB , fR , eN , e0
e0 vB , fR , eN , e
eN (e)
e0
e
fR (e)
vB (e)
e vB , fR , eN , e0
e0 vB , fR , eN , e
vB (e0 )
0
eN (e)
fR (e )
e0
e
fR (e)
eN (e0 ) vB (e)
e vB , fR , eN , e0 3
6
e0 vB , fR , eN , e 7
2
4 3
vB (e0 ) 2
eN (e) 3 1 6
0
fR (e ) 1 5
4
e0 2
4
e 1
fR (e) 9
8 5
eN (e0 ) vB (e)
Procedure:
vE
Initialization eN
listE = { }, listF = { }, e = e(vi ) fL
Advance
e
Add e to listE fR
If i = vB (e), then
add fL (e) to listF eP vB
e = eP (e)
else
add fR (e) to listF
e = eN (e)
Repeat until e coincides again with e(vi )
Procedure:
vE
Initialization eN
listE = { }, listF = { }, e = e(vi ) fL
Advance
e
Add e to listE fR
If i = vB (e), then
add fL (e) to listF eP vB
e = eP (e)
else
add fR (e) to listF The running time of this algo-
e = eN (e) rithm is linear in the number
Repeat until e coincides again with e(vi ) of edges (faces) incident to vi
Procedure:
vE
Initialization eN
listE = { }, listV = { }, e = e(pi ) fL
Advance
e
Add e to listE fR
If i = fL (e), then
add vB (e) to listV eP vB
e = eP (e)
else
addr vE (e) to listV
e = eN (e)
Repeat until e coincides again with e(vi )
Procedure:
vE
Initialization eN
listE = { }, listV = { }, e = e(pi ) fL
Advance
e
Add e to listE fR
If i = fL (e), then
add vB (e) to listV eP vB
e = eP (e)
else
The running time of this algo-
addr vE (e) to listV
rithm is linear in the number
e = eN (e)
of edges (vertices) of the Vo-
Repeat until e coincides again with e(vi ) ronoi region of pi
Computational Geometry, Facultat dInform`
atica de Barcelona, UPC
Voronoi diagram storage
How to obtain information from the DCEL
Convex hull of P
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5
Voronoi:
Delaunay:
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5
Voronoi: faces p x y e
Delaunay: vertices p x y e
incident
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5
Voronoi: edges e vB vE fL fR eP eN
Delaunay: edges e fL fR vE vB eN eP
dual clockwise
3
6
7
4 2 3
2 1
3 6
1 5
4
2
4 1
9
8 5