Software Library for Interference Detection

Version 2.1.0

May the source be with you...

SOLID was originally written by Gino van den Bergen. The original homepage of SOLID version 2.0 is still available here.




SOLID is a library for collision detection of three-dimensional objects undergoing rigid motion and deformation. SOLID is designed to be used in interactive 3D graphics applications, and is especially suited for collision detection of objects and worlds described in VRML.  Some of its features are:


The following papers discuss the algorithms used in SOLID:

G. van den Bergen. "Efficient Collision Detection of Complex Deformable Models using AABB Trees." Journal of Graphics Tools, 2(4):1-13 (1997), PDF (164Kb).

G. van den Bergen. "A Fast and Robust GJK Implementation for Collision Detection of Convex Objects." Journal of Graphics Tools, 4(2):7-25 (1999), PDF (79Kb).


The library is written in standard C++ and relies heavily on STL. Currently it compiles under GNU g++ version 2.8.1 and Visual C++ 5.0. The library has a standard C API and can be linked to both C and C++ applications. Note that for the use in C applications, you need to explicitly include the libstdc++ library in the linkage.

For fast intersection tests and distance computations between convex polyhedra, SOLID relies on the Qhull library for convex hull computations.  Qhull is a free software library and is available for most platforms. Note that a properly operating SOLID library  can be compiled without using Qhull. However, it is recommended to incorporate Qhull for a better performance when polyhedra are used.


The SOLID library and accompanying C++ classes for 3D transformations are released under the terms of the GNU Library General Public License (see documentation).


Current SOLID is available for download in the sourceforge files section ( If this link broken, go to there to find it).


The README file has instructions on how to build and install SOLID for your platform. In case you have a recent GNU developers environment installed simply typing make in the root of the distribution directory will suffice.


Check out the following links related to collision detection:
Last updated on June 13th, 2002 by Olivier Michel