\bf Hints for PS \#3\hskip1in
Hints for PS #3
Here is a breakdown of PS #3 into small steps:
First, build a static triangulation and choose your triangulation data
structure. I recommend chosing one of the following two ways to do this:
-
1.
-
Roll your own
- 1a.
-
Implement Melkman's algorithm for convex hull.
-
1b.
-
Add to the algorithm the identification of triangulation edges.
-
1c.
-
Pick a data structure for triangulations, and make
Melkman's algorithm compute it.
- 2.
-
Steal a data structure
-
2a.
-
Use the quad-edge structure of Leonidas J. Guibas and J. Stolfi, ``Primitives for the manipulation of general subdivisions and the
computation of Voronoi diagrams.'' ACM Trans. Graph.,
4(2):74-123, April 1985. Or see Dan Litchinski's implementation in
Graphics Gems IV.
-
2b.
-
Both of these articles discuss how to build the Delaunay
triangulation in this structure.
Once you have a static triangulation, make it move. This involves
three steps that have minor variations depending on whether you are
doing the Delaunay triangulation or some sort of lazy triangulation
(that repairs triangles only when they are squashed flat).
-
i.
-
For each triangle (or for each triangulation edge),
calculate the time at which it will be destroyed, based on the current
neighboring triangles. This involves finding roots of a polynomial of
degree 2 or 4.
-
ii.
-
From the event times, choose the next event.
-
iii.
-
Perform the swap indicated by the next event, and update
the data structure and list of events based on the new triangles that
are now present.
There is a general solution to the quartic (e.g., http://www.uni-koeln.de/math-nat-fak/phchem/deiters/quartic/quartic.html) or you may wish to use a
root finding technique.
Numerical Recipies is on line:
http://www.ulib.org/webRoot/Books/Numerical_Recipes/ and http://lib-www.lanl.gov/numerical/.
File translated from
TEX
by
TTH,
version 2.60.
On 26 Feb 2000, 21:56.