CS216
Chris Pollett
Apr 27, 2010
class Face {
List<Edge> edges;
FaceDataObject data;
}
foreach remaining point p from P {
foreach face F {
do the normal test on p with respect to F's edge list
to determine if p is surrounded by F.
(for an empty edge list this test trivially succeeds)
if `yes` break;
}
Initialize faceList to be empty list
Initialize edgeList to be empty list
Initialize vertList to be empty list
Initialize lineList to be empty list
set currentFace = F
do {
let p(currentFace) be the point from our initial set P that was stored
in the FaceDataObject of currentFace.
compute the equation of the line L which perpendicularly bisects
p and p(currentFace)
Put L in a list lineList
foreach edge e of currentFace {
if L intersects e {
let p(L) be the intersection of L and e
add p(L) to vertList;
add e to edgeList
let e(currentFace) be the other Face for this edge
add currentFace to faceList
set currentFace = e(currentFace);
break;
}
}
} while (currentFace != F)
build a new face using the vertices in vertList
To make the necessary edges note that the other face adjacent to the edge
corresponding to vertices v_i, v_(i+1) in vertList is face F_i
from faceList
Edges from F_i which don't intersect v_i, v_(i+1) and are on the p side
of line L_i from lineList should be deleted and F_i should be modified
to now have the edge v_i, v_(i+1) (winged-structure appropriately set-up).
After doing the above we have a new Voronoi diagram which incorporates p
and we are ready to loop to the next point.
}
Which of the following statements is true?