These portions of the class hierarchy reflect the usual goals of factoring code for common operations while providing for specialization of operations in particular cases. The subclasses of these freeform shapes are used to record how instances were created so that subsequent modification and query operations can be facilitated. It is our practice to invoke specialized algorithms based on the type of curves and surfaces given to these utilities. This approach allowed us to minimize the size and complexity of the class interfaces for both the curves and surfaces as well as for the intersection result itself. Simple solids are half-spaces, the base objects to which the CSG Boolean operations are applied.
Structured solids are general Boolean combinations of half-spaces.
They are the only types of solids for which it is useful to keep an associated B-Rep. In our system, B-Reps can be associated with each instance of a structured solid in a CSG graph. However in practice B-Reps are normally maintained only at the top one or two levels due to storage considerations. Simple and structured solids differ also in how they are generated by the designer and validated by the system. That is, each parameter can be tested for validity independent of all others.