Delaunay Triangulation in Java:
Triangulation is a popular way to represent surfaces (e.g. terrains).
There are many triangulation packages, yet some of them uses naive algorithms (with running time as high as O(n^3)). Other triangulation packages were written with runtime “in mind” but they are hard to use and are very platform independent (e.g. CGAL triangulation).
During 2001-2004 I wrote a prototype for a GIS expert system for locating large scale wireless networks (see, http://www.yosh.ac.il/dom/bbm/publications/PHD.pdf ch7). Naturally, such a system needs to support irregular terrains (TINs). During that time I was unable to find a triangulation package, with the following two main properties:
With these two guidelines in mind I decided to write the triangulation package in Java.
Only the Delaunay Triangulation was implemented – being the most popular triangulation to present terrains. To do that I took the best “public” code I could find in the web (Klasse für Kreise code from 1996-1997), and rewrote it:
The (DT) package contains only 3 public classes:
Point in 3D: with some basic geometric methods.
Triangle in 3D: representing both a triangle in triangulation and a 3D plane.
Delaunay Triangulation in 2.5D: The main class (with some inner classes) and IO capabilities (save / load to / from text file).
Who use it?:
The DT package is still a prototype and has never been deeply tested, yet about 50 students have used it to implement various projects in Computational Geometry courses (graduated). Moreover the DT package was used in the following experiments:
The current version requires java 1.5 (uses generics for the iterators).
Note: this package is NOT a freeware but I’ll be glad to share the source with any nonprofit organization, for that or for any other comments (say bugs, questions…)
Email me: email@example.com