Tinfour Project Roadmap - gwlucastrig/Tinfour GitHub Wiki

Project Roadmap

The Tinfour software project currently includes a nearly complete range of functions related to the development of a 2D Delaunay triangulation (an optimal triangular mesh). Current work is focused on gradual improvements in performance, robustness, and convenience of use.

Future Work

Future work will, of course, depend on whether the Tinfour project develops a user community. The items below describes some ideas we are considering for future development. Your feedback is welcome. And, naturally, if you are interested in undertaking any software development related to the Tinfour project, your participation is welcome.

Delaunay refinement

Delaunay triangulations attempt to produce a robust set of triangles, but can sometimes give rise to "skinny" triangles, especially near mesh boundaries and constrained edges. Delaunay refinement techniques attempt to improve the quality of the mesh by inserting artificial vertices (Steiner points) into the TIN. A good discussion of the issues is given by Jonathan Shewchuk's notes on Delaunay refinement.

Release 2.1.9 introduces an implementation of Ruppert's algorithm for Delaunay refinement that was contributed by developer Michael Carleton. The current code is stable and produces good results. For future work, we will be exploring ways to improve performance of the Ruppert refiner when processing data sets containing hundreds of thousands of sample points.

We are also interested in working with developers who wish to explore additional refinement techniques, such as Chew's Second Delaunay Refinement algorithm.

Unifying the standard and semi-virtual incremental TIN classes

In the current implementation, the standard and semi-virtual incremental TIN classes feature a substantial amount of redundant code. This unfortunate state of affairs arose during implementation because of performance issues and the incompatibility of the QuadEdge and SemiVirtualEdge classes used by the respective packages. When I attempted to write code that would use a generic interface for edges, it suffered from substantial performance issues due to the cost of "downcasting" Java references when linking edges together in the TIN.

We are currently investigating ways to avoid this overhead and consolidate as much as possible for the two packages. Unifying the standard and semi-virtual implementations has proven to be a challenging undertaking. Developers who are interested in looking at this problem are welcome to contact the Tinfour team.

Other ideas

If you are interested in seeing new capabilities added to Tinfour, we would like to hear about your ideas. Some of the most useful features in the Tinfour libraries were the result of suggestions made by users.

We'd like to be able to set up a gallery web page that showed images from application that used the Tinfour libraries for practical purposes.

We'd like to see Tinfour do more with Voronoi Diagrams, a graphical structure which is closely related to the Delaunay Triangulation.

We'd also like to have the Tinfour Viewer application extend the support for metadata obtained from LAS files, particularly those elements using Well-Known Text (WKT) format and GeoTIFF tags.