Delaunay Stable Zones
This applet computes and depicts the Delaunay triangulation and the Voronoi
diagram for vertices that can be interactively inserted, deleted or moved. For
vertex insertion we implemented Guibas and Stolfi's incremental algorithm. For
vertex deletion we used an approach from Terje Midtbø's thesis.
What makes this applet interesting is that the stable zone of each vertex can
be highlighted. We define the stable zone of a vertex as the area around the
vertex within it can be moved without retriangulating while preserving
the Delaunay property. No edge swaps are necessary as long the moving
vertex does leave its stable zone.
Use ctrl-click to select vertices that are NOT (*) on
the convex hull. Pressing the Update-Stable-Zones button
computes the stable zones of all selected vertices for the current
triangulation. In order to see them the View-Stable-Zones checkbutton must be checked. Moving a vertex within its stable
zone does not affect the shape of its own stable zone, but can change the
shape of others.
The stable zone of a vertex is constrained by the circumcicles of triangles in
the vertex's neigbourhood. With checking the View-Constraining-Circles checkbutton this should become more clear. It is better to
have not more than one vertex selected for this option. The stable zone of a
vertex is the difference of the intersection of all black circles and the union of all white circles.
The white circles are the circumcircles of triangles along the polygon
surrounding the respective vertex, that do exist in the current Delaunay
triangulation. The Delaunay property does not allow the vertex to lie inside
one of those circumcircles, since otherwise the corresponding triangle would
fail the Delaunay criterium. The black circles are the circumcircles of
triangles along the polygon surrounding the respective vertex, that do not
exist in the current Delaunay triangulation. The Delaunay property requires
the vertex to lie inside all of those circumcircles, since otherwise the
corresponding triangle would meet the Delaunay criterium (e.g. and exist in
the current Delaunay triangulation).
(*) otherwise there is a nullpointer exception. There is also another little
bug that results in wrong stable zones if one of the used constraining circles
is a degenerated case that runs along the convex hull. Just stay in the center
of the triangulation for stable zone stuff.