Code by Deepak Bandyopadhyay:


Almost-Delaunay Simplices in CGAL - Code for calculating the Almost-Delaunay Simplices, a framework for robust neighbor relations, in imprecise 3D points such as protein coordinates. A new version is now available, written using the Computational Geometry Algorithms Library (CGAL) version 3.2.1. I distribute it as a source code bundle, with Makefiles for Linux and Cygwin gcc in Windows and project files for the Microsoft Visual C++ .NET 8.0 (2005) on Windows included. Visual C++ .NET 7.0 (2003) project files are included within this archive in a separate folder VS2003, to use if needed.

Binaries are also available for Linux, Windows/VC++ (compiled under Microsoft VC++ 8.0, .NET 2005), and Windows/Cygwin. For Windows, the VC++-compiled versions are currently faster than the Cygwin-compiled versions by nearly a factor of two, due to better compiler optimization. By popular demand, binaries for a version of ADCGAL that return only the AD edges (not triangles and tetrahedra) are also available (Linux, Windows/VC++, Windows/Cygwin). The Windows binaries are less than 512K, while the Linux ones are around 1.5MB. This may be because they were compiled with static libraries to be easily portable to different Linux machines without problems finding compiler-specific shared libraries (this effect may be small; the Cygwin-gcc compiled binaries are only somewhat smaller than statically-linked Linux ones). If you need a slim version for Linux, recompile with the -static option commented in the Makefile.

An earlier version of this code was written using CGAL version 3.0. It is still available as source and binaries for Linux (simplices, edges only) and Windows (simplices, edges only).

For tinkering with the files to make them compile and run on your platform, please see the installation manual.

For usage, see the usage manual -- briefly, the format is:

"ADCGAL <cutoff> <prune> <fileprefix>".
Here <cutoff> usually ranges from 0.0 to 2.0, <prune> from 8.0 to 15.0, and <fileprefix> is the prefix of a file named <fileprefix>.out, containing the input points as rows of 3D coordinates, one point per row. Output gets written in files <fileprefix.del> (indices of Delaunay edges), <fileprefix.AD> (indices of almost-Delaunay edges with non-zero threshold, followed by their threshold), and similarly <fileprefix.del3>,<fileprefix.AD3> (AD triangles), <fileprefix.del4> and and <fileprefix.AD4> (AD tetrahedra).

For technical documentation about the software architecture, class internals, etc., see the code itself as well as this detailed manual. For a deeper understanding of concepts or to look up the definitions of terms I use (eg. cutoff, prune), read my papers. To interface this code with MATLAB and use all the other tools I described elsewhere such as SNAPP and structural motifs, you need to look at ADMATLAB.

Some license stuff. Because of some restrictions placed on use of the CGAL Basic Library, this code is almost, but not quite, free software. Specifically, it is governed by the UNC Open Source Public License. Basically this means that it is free for non-commercial use only, and you must distribute the source and this license with anything you build with it. If you are interested in using ADCGAL in a commercial closed-source product that you will release, please let me know and we will try to work out an appropriate agreement.

The CGAL Basic Library is available under QPL and also a separate license for commercial use, available from GeometryFactory Srl. BOOST is available under the Boost Software License, similar to LGPL.


The ADMATLAB source code bundle contains all the MATLAB code I have developed as a part of my Ph.D., including:

The current version of ADMATLAB is 0.1 alpha, dated March 2005. For reference, here is the older version of the code, 0.01 alpha dated June 2004. Here is the documentation documentation on the AD MATLAB files, also contained in the distribution. This part of the code is free software.

Here are some papers to cite if you use this code in a publication:

I maintain a project web page, which describes Almost-Delaunay Simplices and their applications to the analysis of protein packing, determining protein secondary structure, and analysis of conformational change.


gzstream - the gzstream library was developed by myself and Lutz Kettner in the summer of 2001 to wrap the functionality of the zlib C library for input and output to gzip files, in classes derived from C++ iostreams. Since we released it under the LGPL, this library has been widely incorporated into open source projects worldwide.
Dynamic Shader Lamps - source code for my system for image-based illumination of moving (tracked) real objects using projectors, published in ISAR 2001 (details on web page) is available on request.