Pointgon
- Minimum Weight Triangulation of Polygons with Holes
Download
Description
Pointgon is a program to compute the minimum weight triangulation
of a (simple) polygon with holes (or pointgon for short).
The four algorithms underlying this program are based on recursively
cutting out triangles, one side of which is on the perimeter (a very
simple idea proposed in [Grantson et al. 2005b]), on recursively
splitting a given pointgon with paths through hole vertices (an idea
inspired by a seminal algorithm by [Hoffmann and Okamoto 2004] and
presented in this strict form in [Grantson et al. 2005a]), and on
two combined approaches. The first of the combined approaches can be
seen as a modification and simplification of the seminal algorithm
by [Hoffmann and Okamoto 2004], the second combined approach is a
simplified and straightened version of an algorithm by [Spillner 2005].
A side-by-side description of all four algorithms can be found in a
technical report available below. For comparisons the program also
contains a simple implementation of greedy triangulation, which,
however, is a heuristic that can fail to produce the minimum weight
triangulation.
The program offers a graphical user interface that visualizes
pointgons and their triangulations. Pointgons may be loaded from a
text file, generated randomly, triangulated, and a found triangulation
may be modified by removing and adding edges. In addition, the
triangulation algorithms may be invoked on the command line.
See the shell scripts bench
and benchall
in the source package for examples.
More explanations about this program and the four basic underlying
minimum weight triangulation algorithms (triangle-based, path-based,
combined 1, and combined 2) as well as an analysis of the time
complexity of these algorithms can be found in the following papers:
- Fixed Parameter Algorithms for the
Minimum Weight Triangulation Problem
Magdalene G. Borgelt, Christian Borgelt,
and Christos Levcopoulos
Int. Journal of Computational Geometry
and Applications 18(3):185--220.
World Scientific, Hackensack, NJ, USA 2008
doi:10.1142/S0218195908002581
www.worldscinet.com
(36 pages)
- Fixed Parameter Algorithms for the
Minimum Weight Triangulation Problem
Magdalene Grantson,
Christian Borgelt, and
Christos Levcopoulos.
Technical Report LU-CS-TR:2005-238, ISSN 1650-1276 Report 158,
Lund University, Lund, Sweden 2006.
tr_238_orig.pdf (455 kb)
tr_238_orig.ps.gz (281 kb)
(original version, 33 pages; February 13, 2006)
tr_238.pdf (460 kb)
tr_238.ps.gz (283 kb)
(extended version, 34 pages; February 20, 2006)
- A Fixed Parameter Algorithm for Minimum Weight Triangulation:
Analysis and Experiments
Magdalene Grantson,
Christian Borgelt, and
Christos Levcopoulos.
Technical Report LU-CS-TR:2005-234, ISSN 1650-1276 Report 154,
Lund University, Lund, Sweden 2005.
tr_234.pdf (273 kb)
tr_234.ps.gz (192 kb)
cover_234.pdf (264 kb)
(12 pages; April 20, 2005)
- Minimum Weight Triangulation by Cutting Out Triangles
Magdalene Grantson,
Christian Borgelt, and
Christos Levcopoulos.
Proc. 16th Annual Int. Symposium on Algorithms and Computation
(ISAAC'05, Sanya, China),
LNCS 3827:984-994.
Springer-Verlag, Heidelberg, Germany 2005.
isaac_05.pdf (239 kb)
isaac_05.ps.gz (185 kb)
(10 pages)
An earlier version of this paper was published as:
Technical Report LU-CS-TR:2005-235, ISSN 1650-1276 Report 155,
Lund University, Lund, Sweden 2005 (July 4, 2005).
cover_235.pdf (264 kb)
Basic functions of the graphical user interface include:
- Zoom into the pointgon
Press and hold the middle or right mouse button (different
zoom factors), then move the mouse vertically.
- Move the pointgon
If the pointgon does not fit into the window (scrollbars are shown),
it can be moved by pressing and holding the left mouse button and
then moving the mouse.
- Remove an edge of a triangulation
Press and hold either the shift or the control key, then press
the right mouse button close to the edge you want to remove.
- Add an edge to a triangulation
Press and hold either the shift or the control key, then press
the left mouse button first close to the source vertex and then
close to the destination vertex. A selection of the source can
be discarded by pressing the middle mouse button.
All other functions are accessible through the program menu.