BOOLE is a system that converts a CSG (Constructive Solid Geometry) model into B-rep (Boundary Representation) form. It is designed to work on curved solid primitives like cylinders, tori, spheres, generalized prisms etc., as well as polygonal solids. BOOLE performs the set operations union, intersection, and difference on solids.

The boundary of the solid is represented using trimmed Bezier patches.

Two cones Their difference

The BOOLE distribution includes, as an example, a file describing each of these two (truncated) cones, and instructions for computing their difference. Here are rendered images of this boolean operation. On the left, the two cones (cone1 and cone2) are rendered together on the screen. On the right, their difference, as computed by BOOLE. The rendering is by our own trimmed NURBS viewer, now available for download.

BOOLE, release 1.1

The public release of BOOLE was updated on October 17, 1997. Features of BOOLE 1.1 over 1.0: Contemporary with this release is a release of our viewer, in precompiled binary format only for SGI workstations running IRIX 6.x.


For help in unpacking and compiling BOOLE, see the compiling text file. BOOLE 1.1 is known to compile and run in the following environments: and we expect compilation problems to be minimal under other environments.

Send mail to with questions, comments, and bug reports.

The documentation of BOOLE is very much a work in progress. If you mail us a question, we will likely include the answer in the docs. The latest versions of the doc files are available separately for browsing here. Note especially the copyright.

Tech reports

Papers and tech reports on the BOOLE system and surface-intersection algorithms can be downloaded from here.
Tim Culver Last modified: Mon Mar 16 11:12:16 EST 1998