Graphics Reference
In-Depth Information
Although one is free to choose any set of primitives or transformations for a csg-
rep, generic halfspaces of one sort or another are usually used as primitives. Two
common csg-reps used
(1) “arbitrary” (possibly unbounded) generic halfspaces as primitives, or
(2) bounded generic halfspace combinations as primitives.
Primitives are often parameterized. For example, a primitive block is usually con-
sidered to be situated at the origin and to be defined by the three parameters of length,
width, and height. One then talks about instancing a primitive, where that term means
(1) assigning values to the configuration parameters, and then
(2) positioning the result of (1) via a rigid motion (which could also be viewed as
assigning values to positional parameters).
Csg-reps can handle nonmanifold objects. Their exact domain of coverage
depends on
(1) the primitives (actually the halfspaces which define them),
(2) the motion operators that are available, and
(3) the set operators that are available.
It is interesting to note the results of an extensive survey of mechanical parts and
what it takes to describe them which can be found in [SaRE76]. Fully 63% of all the
parts could be handled with a CSG system based on only orthogonal block and
cylinder primitives. A larger class of primitives provided a natural description of over
90% of the parts. This indicated that CSG is therefore a good fit for a CAD system in
that sort of environment because most mechanical parts seemed to be relatively
simple.
If one uses general operations and bounded primitives, then one gets a represen-
tation that is
(1) unambiguous,
(2) not unique,
(3) very concise, and
(4) easy to create (at least for its domain of coverage).
One of the biggest advantages of a csg-rep over other representation schemes is
that validity is pretty much built into the representation if one is a little careful about
choosing primitives. For example, if one uses r-sets as primitives and arbitrary regu-
larized set operations, then the algebraic properties of r-sets ensure that a represen-
tation is always valid. This is not the case if operations are not general, for example,
if the union operation is only allowed for quasi-disjoint objects. Also, in a CSG system
based on general generic halfspaces, some trees may represent unbounded sets and
hence not be valid. It is true however that, by in large, all syntactically correct CSG
representations (trees) are also semantically correct.
Because of the tree structure of a CSG representation, one can often use a divide-
and-conquer approach to algorithms: one first solves a problem for the primitive
Search WWH ::




Custom Search