Downloads: Source Code (Visual Studio 2008 SP1, C++) [Zip]
DragDropTool is a simple tool for combining meshes via an intuitive drag-and-drop interaction. It is primarily an implementation of the techniques described in the following publications:
DragDropTool includes the following capabilities:
Here is a screenshot:
DragDropTool is built on top of the libgeometry library (included in the subdirectory libgeometry\) which is in turn built on top of WildMagic4 from GeometricTools. To build DragDropTool you will need to follow three steps:
Note that some pre-compiled static libraries are included (for exmaple GLUT and GLUI). These are built for Visual Studio 2008 SP1 and are unlikely to work with other versions (but they might - who knows!).
Here is an incomplete list of controls, which you will need to know to use the software:
There are also options for each of the tools. You'll have to figure those out on your own...
Too many to list. This is research software. It is not robust or efficient. Good luck!
If you are running inside the Visual Studio debugger and it is very slow, make sure you have set the environment variable _NO_DEBUG_HEAP=1 in the Environment field of the Debugging options in the CloneTool Configuration Properties (right-click on the CloneTool project in the Solution Explorer and select Properties at the bottom to get there). This will make an enormous difference.
This majority of this code is released under the Boost 1.0 License, so you can use it for any purpose, commercial or non-commercial. However, some of the code is taken from other sources and you will need to respect their individual licenses:
The subdirectory libgeometry\WildMagic4 is taken from the WildMagic library (version 4) developed and distributed by Dave Eberly at GeometricTools.com. WildMagic contains, quite simply, the best low-level math library ever, and you should use it for everything. It is similarly under the Boost 1.0 License.
The subdirectory libgeometry\external\SparseMatrix contains pre-compiled libraries that themselves contain compiled versions of many other math libraries, including LAPACK, BLAS, TAUCS, METIS, UMFPACK, and more. Please see the GSI page for details.
The subdirectory DragDropTool\libgui\external contains files from PugiXML, by Arseny Kapoulkine. PugiXML is provided under the MIT license, so you can use it in anything but you have to provide some attribution (details).
The subdirectory DragDropTool contains pre-compiled static libraries for GLUT, by Mark Kilgard, and GLUI, by Paul Rademacher. GLUT is "not public domain but freely redistributable" (link) and GLUI is distributed under the LGPL.
The file libgeometry\mesh_processing\Triangulator2D.cpp contains the source code to the TRIANGLE software, copyright Jonathan Richard Shewchuk. This code may not be used in commercial products without permission from the copyright owner. Please contact him, not me.
If you want to reference TRIANGLE, here is a citation:
Jonathan Richard Shewchuk, Triangle: Engineering a 2D Quality Mesh Generator and Delaunay Triangulator, in ``Applied Computational Geometry: Towards Geometric Engineering'' (Ming C. Lin and Dinesh Manocha, editors), volume 1148 of Lecture Notes in Computer Science, pages 203-222, Springer-Verlag, Berlin, May 1996. (From the First ACM Workshop on Applied Computational Geometry.) [PostScript] [HTML].
RMS @ DGP