CSG-Based Modeling
object instancing is also used in CSG graphs (Constructive Solid Geometry), a common type of representation for objects within the CAD domain. A CSG expression is a set operation with volume objects or with point sets in IR3. The basic objects (ball, cylinder, cone, etc.,...) are canonically represented, transformed individually, and combined using Boolean operations (П, U, , etc.,...). Since the Boolean operations are univalent or bivalent (unary or binary), the expression can also be illustrated in the form of a binary tree (CSG tree). Gervautz and Traxler [74] extend this tree description by allowing cyclic CSG graphs, and by permitting arbitrarily refined descriptions of objects. A CSG graph can be regarded as an extension of object instancing, since aside from the union operation other Boolean operations are allowed.
In the approach of Gervautz and Traxler, the CSG graphs are produced by Section 5.13 parametric L-systems. Due to the special structure of the graphs, the languages CSG-Based Modeling
have the following notation (axiom w: E):
//op є {П, u, }
// trans є {rotx(a), roty(a),rotz(a),
// move(dx, dy, dz), scale(dx, dy, dz) // uscale(s)}
// obj є set of primitive objects
The parameterized description of the Sierpinski triangle or its discrete approximation with a CSG tree of depth six is represented in this notation as (with
w = S (6)):
S(c) : c = 0 ::= triangle
S(c) : c> 0 ::= move(0.5,0.5)uscale(0.5)S(c - 1)
Umove(0.5, -0.5)uscale(0.5)S(c - 1) Umove(-0.5,0.5)uscale(0.5)S(c-1)
For the transformation of the L-system into a cyclic CSG graph, additionally three node types are introduced: A t-node is a parameterized transformation node; an s-node represents an option; a c-node is able to implement a numeric Figure 51s
computation. The graph for the above system is represented in Fig. 5.18a. Cyclic CSG graphs: (a) description of a