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?