.NH 1
Origins and Principles of Solid Modeling
.NH 2
Brief history of design
.PP
When prehistoric man began fashioning tools and adapting his
surroundings to suit him, the history of design began.
Driven by his desires, prehistoric man made plans in the form of
ideas and mental images.
Whether the implementation of these plans was successful or unsuccessful,
the plan and goal remained as private mental images, locked within
the mind of the individual.
.PP
The limitations of this elegant and simple design process
were reached when prehistoric man encountered
a stone or tree too massive to be dealt with by a single individual.
A new dimension was introduced as he attempted to
share his ideas and goals with his peers, and organize their aid.
Most likely he communicated his ideas by arranging small stones and sticks
to form a miniature representation of the initial state of things,
and then to manually manipulate his model step by step
(no doubt accompanied by grunts, wild gestures, and significant glances)
until the desired final configuration was achieved.
Then the group went off to implement the plan in full scale.
Variations of this design metholodogy persist into the present.
.PP
As evolution progressed and the fashionings of man became more
and more complex, the necessity for constructing a physical model
to communicate ideas grew cumbersome.  Detailed models could require
substantial effort to construct, and could be difficult to transport.
The time required to construct a model might be a substantial fraction
of the time to construct the actual object.
Furthermore, insight into the construction process could be
difficult without disassembling and reassembling the model.
Considerations such as these motivated the next level of abstraction:
the drawing.  The first drawings were probably simple
scratchings in earth or sand, depicting the outlines of the
objects involved:  a two-dimensional wireframe.
.PP
With the passage of time, drawings evolved beyond simple engineering
representations into recordings of significant events, and art.
Drawings were enhanced with color and shading in an attempt to
more accurately convey the three dimensional nature of reality.
As the field of engineering progressed further, draftsmen
began explicitly providing indications of the three dimensional
nature of their subjects by representing hidden and false edges
as light or broken lines,
.[
Requicha Historical Summary
.]
such as in Figure 1.1.
Subsequent to this development,
drafting advanced very little, and has persisted nearly unchanged
up to the present.
.KF
.PS
scale=250
box invis ht 340 wid 656 with .sw at 0,0
line  from 240,142 to 648,142
arc from 240,336 to 144,240 at 240,240
arc from 144,236 to 240,144 at 240,240
line  from 240,336 to 648,336
line  from 648,336 to 544,232
line  from 648,336 to 648,144
line  from 544,40 to 648,144
line  from 544,232 to 544,40
line  from 136,232 to 544,232
arc from 136,40 to 232,136 at 136,136
arc from 232,136 to 136,232 at 136,136
line  from 136,40 to 544,40
line  from 164,28 to 204,68 dotted
line  from 28,164 to 172,308 dotted
circle rad 96 at 96,96
.PE
.ce
\fBFigure 1.1 \(em Wireframe Ambiguity\fR
.KE
.PP
The digital computer provides the opportunity for nearly infinite
variety in the representation of information within it.
Improving the design of complex, expensive objects
is always an area ripe for technological improvements,
and with the emergence of graphics displays, computer aided
design (CAD) packages began to appear.
Designers of early CAD packages focused their efforts on the most
tedious, time-consuming, and unrewarding aspect of conventional design:
the process of converting a designer's sketches and notes into
finished engineering drawings suitable for use by a manufacturing
facility \(em the drafting proces.
Thus, while computers offered the ability to create arbitrarily
powerful
mathematical representations for objects, initial CAD systems
replicated traditional two-dimensional drafting techniques.
Only modest gains in efficiency were made in creating
the first version of a design,
but tremendous gains were made when design modifications were needed,
because the computer retains and redraws the unchanged portions of
the drawing.
.PP
Once a computer aided drafting system has been used to create a
computer representation of a design,
the designer (and his management)
is often tempted to expect more out of the computer
system than simply drawings.  One would expect that a representation
that depicted the boundaries of an object from several views
would provide sufficient information for computing a whole
variety of useful facts about the model, such as center of mass,
volume, cross-sectional area, etc.
Two-dimensional drafting systems were poorly prepared for this
sort of interrogation.  With the addition of appropriate connectivity
and material property information, these capabilities
became possible, giving rise to 2.5-dimensional drafting systems,
which are frequently called 3-dimensional wireframe systems.
For limited analysis, 2.5-dimensional models may provide all the
required information.
.PP
Four major types of difficulties have plagued wireframe systems.
First, the user is required to supply a large amount of information,
often at a very low level.
Because of the drafting heritage, some of
this information may be ``construction lines'' that do not actually
contribute to the ultimate shape of any object.
Second, because the user is providing such low-level information,
objects can easily be defined
which can not be physically realized due to
non-closed faces and dangling lines.
Third, it is possible to construct a wireframe which might represent
several different solid objects;  additional information is needed to
disambiguate the description.
Finally, wireframe models may include
lines representing false edges such as profile lines and silhouettes,
leading to ambiguous interpretations.
.[
Requicha historical summary
.]
These issues have driven the refinement of drafting-type systems,
but have also focused attention on the quiet evolution
of an entirely different approach
to representing objects:  solid models.
.NH 2
What is a solid model?
.PP
A solid model is
a computer description of closed, solid, three-dimensional shapes
represented by  an analytical framework within which the three-dimensional
material can be completely and unambiguously defined.
.[
Deitz improved acquisition
.]
Solid models differ from drafting-type systems in several
important ways:
objects are composed of combinations of primitive objects (some quite
complex), each of which is complete, unambiguous,
physically realizable, and modifiable.
Because these properties hold for the primitive objects, they hold
for any boolean combinations as well.
.PP
Completeness is assured because the
representation contains a full description of a piece of solid matter;
there is no view-specific information.
Because the solid matter is completely described, there
is no possibility for ambiguity.
For primitive solids defined by specifying parameters to an analytic
function, there is no possibility of having missing faces, loose edges, or
other similar defects.
Systems which offer boundary representations as primitive solids
must carefully validate each such solid when it is created.
Because solid modeling systems generally do not attempt to compute
an exact analytic representation of the surfaces of all the objects,
but instead derive the actual surfaces by evaluating the boolean combination
expressions in the model interrogation
process (such as by ray-tracing), a solid model is
always amenable to further modification by boolean combination with
other shapes.
.PP
These properties guarantee that
all the spatial information necessary for any
subsequent analysis is directly available from the model representation.
Object structure and material properties can be computed
at any arbitrary point in the model
or along all points of an arbitrary directed ray
at any time.
Therefore, solid modeling technology is particularly suited to the
automation of many manufacturing and analysis tasks.
.NH 2
The Design Loop
.PP
Solid models are very useful for generating drawings or pictures of
the modeled object, from any viewpoint.
The power of this capability alone usually pays for the cost of
developing the model.
However, the solid model has a much larger role in the design process
than simply automating the production of pictures and engineering
drawings.
Properly utilized, the solid model becomes the central element in the
iterative process of taking a design from idea to prototype design
to working design to optimized design.
This iterative process is termed the ``design loop'', and is illustrated
in Figure 1.2.
.KF
.PS
scale=200
define m0 |
[ box invis ht 121 wid 176 with .sw at 0,0
"\f1\s16\&M O D E L\f1\s0" at 87,53
ellipse ht 24 wid 176 at 88,12
ellipse ht 24 wid 176 at 88,109
line  from 1,106 to 1,16 
line  from 176,109 to 176,15 
] |

box invis ht 510 wid 529 with .sw at 0,0
line -> from 526,11 to 438,11 
line  from 526,283 to 526,11 
line  from 494,283 to 494,91 
line  from 422,283 to 526,283 
line -> from 494,91 to 414,91 
m0 with .nw at 261,465
spline -> from 242,401\
to 201,384\
to 137,384\
to 102,399
spline -> from 103,435\
to 144,452\
to 208,452\
to 243,437
line -> from 258,89 to 122,89 
line -> from 266,177 to 122,113 
line  from 342,331 to 342,315 
line  from 64,228 to 54,220 
line  from 64,228 to 75,220 
line  from 64,103 to 64,228 
line  from 70,384 to 65,392 
line  from 60,381 to 65,392 
line  from 65,277 to 65,392 
"\f1\s16\&Manufacturing\f1\s0" at 333,13
"\f1\s16\&Analysis 1\f1\s0" at 338,181
"\f1\s16\&Analysis N\f1\s0" at 338,85
line  from 462,283 to 462,187 
line -> from 462,187 to 406,187 
"\f1\s16\&Interrogate\f1\s0" at 332,277
box ht 44 wid 169 with .nw at 248,301 
"\f1\s16\&& Images\f1\s0" at 48,62
"\f1\s16\&Reports\f1\s0" at 43,85
"\f1\s16\&User\f1\s0" at 57,253
"\f1\s16\&Edit\f1\s0" at 63,410
.PE
.ce 1
\fBFigure 1.2 \(em The Design Loop\fR
.KE
.PP
In a full scale solid modeling system, there is no need for initial
drawings;  the designer expresses the initial structures directly
into the modeling system's editor,
just as a modern author creates his ``rough draft''
directly into a word processor.
At the completion of each version of the design, the model is
subjected to a battery of analyses appropriate to the function of the
object being designed.
Strength, volume, weight, level of protection, and other similar evaluations
can be reported, along with the
production of a variety of images and/or drawings.
These automated analyses help identify weaknesses or deficiencies in
a design \fIearly in the design process\fR.
By detecting flaws early, the designer has the
opportunity to correct his plans before having invested too much time
in a bad design, or the designer can
switch to an entirely different approach which may seem more promising
than the original one.
In this way, the solid modeling system allows the designer to
concentrate on the important, creative aspects of the design process.
Freeing the designer of routine analysis permits designs to be
finished in less time than previously required, or allows much more
rigorously optimized designs to be delivered in comparable
timeframes and at the same cost as unoptimized designs created using
older techniques.
.[
Deitz item-level modeling
.]
.PP
A highly interactive modeling system can allow full designs to be
completed in a matter of days, where weeks or months may have
previously been required.
.[
Deitz ncga
.]
Furthermore, the modeling system allows sweeping design changes to be
made quickly and cheaply, allowing great flexibility in the face of
ever changing requirements and markets.
The time needed to create a new product can be further decreased by
re-utilizing elements of earlier models and then modifying them as
appropriate.  If such an existing component is entirely suitable
for use in a new design, manufacturing and inventory
savings should also be realized.
.PP
Yet another benefit of developing a solids model is the opportunity
to exploit computer aided manufacturing (CAM).
In the design evaluation process, numerically controlled (NC) milling
machines can be used to produce small quantities of prototype parts
with a limited amount of human planning or supervision.
When the design is ready for full scale production, optimization of
the automatically produced NC programs
can result in maximum production rates from
factory automation equipment with minimum waste.
.PP
In summary, allowing the designer the opportunity to explore and
analyze more design options will allow the development of the
highest quality product, while also improving the work environment of
the designer by eliminating boring, repetitive tasks.
.NH 2
Model representations
.PP
Two major families of solid model representations exist,
each with several unique advantages.
The first representation, developed by MAGI under contract to BRL
.[
MAGI geometric description technique
.]
in the mid 1960s,
is the combinatorial solid geometry representation (CSG-rep).
Solid models of this type are expressed as boolean combinations of
primitive solids.
Each primitive solid is a geometric entity described by some set of
parameters that occupies a fixed volume in space;
the choice of primitive solid types available varies from system to
system.
The simplest solid that can be used is the halfspace,
.[
Requicha historical summary
.]
defined by the infinite plane $ a x + b y + c z + d = 0$
plus all points on one side of that plane.
Systems which defined all objects in terms of
Boolean combinations of halfspaces
include SHAPES
.[
Laning SHAPES user manual
.]
.[
Laning Capabilities of SHAPES
.]
from Draper Laboratories and TIPS-1
.[
Okino Kakazu Kubo TIPS-1 Technical Information Processing System
.]
.[
Okino TIPS 77 version
.]
.[
Okino TIPS practical approaches for an integrated CAD/CAM system
.]
.[
Okino TIPS graphics processor
.]
.[
Okino Kubo Kakazu TIPS-2 integrated CAD/CAM system prolomat
.]
from Hokkaido University.
While this choice of representation
limits these systems to modeling objects with
planar faces, and excludes smooth objects (or forces them to be
approximated), the simplicity of this representation lends itself to
very natural processing by VLSI hardware.
.[
Kedem computer structures vlsi design for classification
.]
.[
Kedem Ellis computer structures curve-solid classification geometric modeling
.]
Most CSG-rep systems in use today
offer quite a variety of primitive solids, ranging from various types
of spheres and ellipses, boxes and cones,
and solids defined by swept or extruded curves.
Some examples of CSG-rep systems which use primitive solids include
GDP/GRIN (IBM),
.[
Fitzgerald GRIN
.]
PADL-1,
.[
Voelcker PADL introduction
.]
.[
Voelcker PADL system for defining solid objects
.]
PADL-2,
.[
Brown PADL-2
.]
Series 7000 SMS (Auto-Trol),
GMSolid,
.[
Boyse GMSolid
.]
.[
Roth ray casting solid modeling
.]
SynthaVision (MAGI)
.[
Goldstein 3-D visual simulation
.]
.[
Goldstein modelling with the synthavision system
.]
(SynthaVision is also marketed as ICEM by CDC,
and Solids Modeling II by Applicon),
MGED (BRL),
.[
Weaver Muuss interactive construction
.]
.[
Muuss GED interactive solid modeling
.]
and ProSolid (CAEtec).
.PP
The alternative to describing solids with primitives is to adopt a
boundary representation (B-rep),
of which there are two sub-types,
the \fIexplicit\fR and \fIimplicit\fR boundary representations.
In an explicit boundary representation, each solid is described
by an explicit specification of all the points on the surface of the
solid, typically by exhaustively listing the vertices of many planar
facets.
Alternatively, there are implicit boundary representations,
where the surface of the solid is described by an analytic function
such as Coons patches,
.[
Coons surfaces space forms
.]
Bezier patches,
.[
Bezier unisurf
.]
splines,
.[
deBoor practical guide splines
.]
etc.
Some examples of B-rep systems (not all of which qualify as solid modelers)
are:
Alpha_1 (U. Utah),
.[
Cohen mathematical tools for modelers workbench
.]
Build-2 (U. Cambridge),
.[
Braid new generations
.]
.[
Braid stepwise construction
.[
Hillyard build group
.]
CADD (McAuto),
CATIA (Dassault/IBM),
Compac (Technical U. Berlin),
.[
COMPAC integrated design and production
.]
.[
COMPAC workpiece design manufacturing
.]
.[
COMPAC integration design manufacturing planning
.]
.[
COMPAC producing engineering drawings
.]
.[
COMPAC further development
.]
Euclid (Matra Datavision),
.[
Bernascon euclid
.]
Euklid (Fides Co.),
.[
EUKLID language for 30 applications
.]
.[
EUKLID eine einfuhrung
.]
Glide (CMU),
.[
Eastman glide language for design
.]
.[
Eastman glide modelling using euler operators
.]
Medusa (Cambridge Interactive Systems, Ltd.),
PATRAN (PDA Engineering),
Romulus (Shape Data Ltd, Evans&Sutherland),
.[
ROMULUS
.]
and Solidesign (Computervision).
.NH 2
Representation Issues
.PP
Boundary representations offer the advantage of being able to
naturally model solid objects with arbitrarily shaped surfaces, but
can require a large amount of information to achieve acceptable
results.
Both CSG-reps and B-reps have certain advantages.  With pure CSG
representation, it can be exceedingly difficult and non-intuitive to
attempt to describe sculptured, free-form surfaces.
But similarly, implementing operations like boolean intersection and
boolean differences \fIon the fundamental representation itself\fR
can be difficult with pure Boundary representations.
Many current B-rep modelers implement boolean operations as an
external procedure, because current brute-force schemes to
evaluate Boolean operations are not closed.
As an example of this,
B-spline $inter$ B-spline results in polygons
rather than another B-spline.
In a boundary representation closed under the set of boolean operations,
B-rep $inter$ B-rep $->$ B-rep.
Thus, pure B-rep systems may be difficult to use for some types of
objects, especially those with sculptured surfaces pierced by sharp
rectangular gouges.
.[
Thomas volumes bounded by b-spline surfaces
.]
.PP
Even though existing systems were listed earlier as being either
CSG-rep or B-rep, the reality is that many
of these systems are actually hybrids of the two approaches,
offering the designer the choice of primitive solids or boundary
representations, as appropriate for each task.
In practice, the implementation of the
CSG-rep and B-rep portions of
the software may be quite different, but at the highest level of abstraction
each representation is just a different way of viewing the other.
Faceted primitives such as boxes and wedges can be thought of as
explicit B-reps, and smooth primitives such as spheres and cones can
be thought of as implicit B-reps defined by analytic
functions.
Until one uniform representation can be found, hybrid systems seem
both inevitable and desirable.
.NH 2
Mathematical descriptions of the primitive solids
.PP
There are differences between the primitive solids offered by any given
modeling system.  However, common primitives which are likely to be offered
by most systems include the half-space, ellipsoid,
truncated general cone, torus,
convex polyhedra with small numbers of vertices (typically four to eight),
faceted polyhedra,
sets of closed B-spline surfaces which taken together
define the bounds of a solid object,
and curves swept through space.
Examples of many of these types of primitives are shown
hovering over a mirror in plate 1.1.
.KF
.PS
scale=300
box invis ht 400 wid 553 with .sw at 0,0
"\f1\s16\&inside\f1\s0" at 184,347
"\f1\s16\&Origin\f1\s0" at 152,211
spline  from 361,289\
to 362,266\
to 344,255\
to 315,269\
to 295,264\
to 291,251\
to 286,236
spline  from 194,242\
to 202,220\
to 217,215\
to 242,220\
to 258,253\
to 278,251\
to 294,236
"\f1\s16\&d\f1\s0" at 306,202
"\f1\s16\&N\f1\s0" at 464,371
spline  from 273,561\
to 221,567\
to 195,528\
to 104,518\
to 83,462\
to 15,448\
to 41,375\
to 0,326\
to 43,298\
to 34,238\
to 64,227\
to 62,164\
to 131,151\
to 167,114\
to 205,102\
to 223,81\
to 278,107\
to 315,95\
to 349,99\
to 350,131\
to 375,145\
to 381,157
line  from 273,561 to 417,129 
line -> from 337,369 to 553,441 
line  from 361,377 to 353,401 
line  from 353,401 to 329,393 
line  from 194,242 to 361,297 
circle rad 8 at 361,297
circle rad 8 at 193,241
line -> from 417,130 to 352,0 
line -> from 273,561 to 208,431 
"\f1\s16\&outside\f1\s0" at 424,515
.PE
.ce 1
\fBFigure 1.3 \(em Definition of a Halfspace\fR
.KE
.NH 3
Halfspace (HALF)
.PP
The simplest solid that can be used is the halfspace,
defined by the infinite plane $ a x + b y + c z + d = 0$
plus all points on one side of that plane.
Referring to figure 1.3,
another way to define a halfspace is to specify a vector
$bold N vec$ normal to the surface of the plane
with unit length
(i.e. $| bold N vec | = 1$)
and to specify
the minimum distance $d$ from the origin to the plane.
If $d >= 0$ then the origin is inside the halfspace, otherwise
the origin is outside.
More rigorously, any point $bold X vec$ is contained within the halfspace
if $bold N vec cdot bold X vec <= d$.
Points lying on the surface of the plane
are considered to be inside the halfspace.
.KF
.PS
scale=300
define m0 |
[ box invis ht 238 wid 356 with .sw at 0,0
line -> from 178,119 to 138,63 
line -> from 178,119 to 178,0 
line -> from 178,119 to 356,119 
ellipse ht 236 wid 90 at 178,119
ellipse ht 114 wid 356 at 178,119
ellipse ht 238 wid 356 at 178,119
circle rad 7 at 178,119
] |

box invis ht 324 wid 700 with .sw at 0,0
"\f1\s16\&V\f1\s0" at 92,224
"\f1\s16\&A\f1\s0" at 62,160
"\f1\s16\&C\f1\s0" at 107,76
"\f1\s16\&B\f1\s0" at 229,202
ellipse ht 208 wid 68 at 106,205
line -> from 106,205 to 212,205 
line -> from 106,205 to 76,164 
line -> from 106,205 to 106,100 
"\f1\s16\&SPHERE\f1\s0" at 106,26
"\f1\s16\&ELLIPSE\f1\s0" at 455,13
circle rad 7 at 106,205
circle rad 105 at 106,205
ellipse ht 82 wid 212 at 106,205
m0 with .nw at 274,324
"\f1\s16\&B\f1\s0" at 650,200
"\f1\s16\&V\f1\s0" at 441,226
"\f1\s16\&A\f1\s0" at 404,134
"\f1\s16\&C\f1\s0" at 453,58
"\f1\s10\&\f1\s0" at 90,213
.PE
.ce 1
\fBFigure 1.4 \(em Ellipsoid\fR
.KE
.NH 3
Ellipsoid (ELL)
.PP
Referring to figure 1.4,
an ellipsoid can be defined by specifying a vector
$bold V vec$ from the origin to the center of the ellipsoid,
and by specifying three vectors
$bold A vec , bold B vec , bold C vec$
which are mutually perpendicular, and whose magnitudes define the
eccentricity of the ellipse.
Thus, $ | bold A vec |=| bold B vec |=| bold C vec | $ defines a sphere.
.KF
.PS
scale=300
box invis ht 494 wid 463 with .sw at 0,0
"\f1\s16\&D\f1\s0" at 325,463
line -> from 231,95 to 463,95 
line  from 231,190 to 239,183 
line  from 223,183 to 231,190 
line  from 231,95 to 231,190 
line -> from 343,431 to 447,431 
line  from 343,494 to 351,487 
line  from 335,487 to 343,494 
line  from 343,431 to 343,494 
line  from 447,431 to 463,95 
line  from 239,431 to 0,95 
ellipse ht 126 wid 208 at 343,431
ellipse ht 190 wid 462 at 231,95
circle rad 8 at 231,95
line -> from 231,95 to 343,431 dashed
"\f1\s16\&V\f1\s0" at 208,68
"\f1\s16\&A\f1\s0" at 423,70
"\f1\s16\&B\f1\s0" at 209,158
"\f1\s16\&H\f1\s0" at 323,287
"\f1\s16\&C\f1\s0" at 404,403
.PE
.ce 1
\fBFigure 1.5 \(em Truncated General Cone\fR
.KE
.NH 3
Truncated General Cone (TGC)
.PP
Referring to figure 1.5, a truncated general cone can be defined by specifying
a vector $bold V vec$ from the origin to the center of the ``lower'' ellipse,
two perpendicular vectors $bold A vec$ and $bold B vec$
which define the orientation and eccentricity of the lower ellipse,
a vector $bold H vec$ which defines the height and slant of the cone,
and two more perpendicular vectors $bold C vec$ and $bold D vec$
which define the orientation and eccentricity of the upper ellipse.
.KF
.PS
scale=300
box invis ht 448 wid 616 with .sw at 0,0
circle rad 31 at 560,352
line  from 560,448 to 560,0 dashed
line -> from 560,224 to 592,224 
line  from 8,64 to 616,64 dashed
line  from 8,96 to 616,96 dashed
line  from 8,128 to 616,128 dashed
circle rad 160 at 160,224
line  from 176,232 to 176,232 
line  from 176,256 to 152,248 
line  from 184,232 to 176,256 
line -> from 160,224 to 280,264 
line  from 136,224 to 616,224 dashed
line  from 8,320 to 616,320 dashed
line  from 8,352 to 616,352 dashed
line  from 8,384 to 616,384 dashed
line -> from 159,224 to 120,344 
circle rad 128 at 160,224
circle rad 97 at 159,224
circle rad 8 at 160,224
line  from 528,352 to 528,96 
line  from 594,352 to 594,96 
"\f1\s16\&R2\f1\s0" at 504,368
"\f1\s16\&H\f1\s0" at 578,254
"\f1\s16\&V\f1\s0" at 544,191
"\f1\s16\&V\f1\s0" at 137,197
line  from 160,384 to 168,376 
line  from 152,376 to 160,384 
line  from 160,352 to 160,384 
"\f1\s16\&R2\f1\s0" at 194,362
"\f1\s16\&A\f1\s0" at 271,235
"\f1\s16\&R1\f1\s0" at 212,257
"\f1\s16\&B\f1\s0" at 144,331
circle rad 7 at 560,224
"\f1\s16\&R1\f1\s0" at 579,145
line  from 560,96 to 568,104 
line  from 568,104 to 568,104 
line  from 568,104 to 568,104 
line  from 552,104 to 560,96 
line  from 560,224 to 560,96 
line -> from 560,352 to 538,373 
circle rad 31 at 560,96
.PE
.ce 1
\fBFigure 1.6 \(em Torus\fR
.KE
.NH 3
Torus (TOR)
.PP
Referring to figure 1.6, a torus can be defined by specifying a vector
$bold V vec$ from the origin to the center of the torus,
three mutually  perpendicular vectors
$bold A vec$ and $bold B vec$ and $bold H vec$
which specify the plane containing the torus and the normal to the plane,
plus two radii, $R sub 1$ which specifies the overall radius of the torus,
and $R sub 2$ which specifies the radius of the swept circular section of
the torus.
Some systems may allow the torus to have non-circular shape and cross-section,
in which case more parameters would be required.
.KF
.PS
scale=300
box invis ht 312 wid 631 with .sw at 0,0
line  from 146,32 to 18,128 
line  from 146,32 to 226,104 
line  from 146,256 to 146,32 
line  from 18,128 to 226,104 dashed
line  from 474,64 to 474,64 
line  from 338,136 to 346,128 
line  from 330,128 to 338,136 
line  from 338,136 to 338,64 
line  from 474,136 to 338,136 
line  from 458,200 to 610,192 dashed
line  from 458,200 to 458,256 dashed
line  from 338,64 to 458,200 dashed
line -> from 338,64 to 474,136 
"\f1\s16\&8\f1\s0" at 440,272
"\f1\s16\&7\f1\s0" at 607,300
"\f1\s16\&6\f1\s0" at 626,184
"\f1\s16\&5\f1\s0" at 474,213
"\f1\s16\&4\f1\s0" at 319,134
"\f1\s16\&3\f1\s0" at 493,132
"\f1\s16\&2\f1\s0" at 486,44
"\f1\s16\&1\f1\s0" at 324,53
line  from 594,296 to 610,192 
line  from 458,256 to 594,296 
line  from 338,136 to 458,256 
line  from 474,136 to 594,296 
line  from 474,64 to 610,192 
line  from 474,64 to 474,136 
line -> from 338,64 to 474,64 
"\f1\s16\&4, 5, 6, 7, 8\f1\s0" at 148,274
"\f1\s16\&3\f1\s0" at 243,101
"\f1\s16\&2\f1\s0" at 154,13
"\f1\s16\&1\f1\s0" at 4,128
line  from 226,104 to 146,256 
line  from 18,128 to 146,256 
.PE
.ce 1
\fBFigure 1.7 \(em Convex Polyhedron (ARB8)\fR
.KE
.NH 3
Convex Polyhedron with 4 to 8 vertices (ARB8)
.PP
Referring to figure 1.7, a convex polyhedron can be defined
in absolute form by specifying
the points which represent the vertices of the faces, or
in relative form by
specifying a vector $bold V vec$ from the origin to the first vertex
and seven additional vectors ${ bold R vec sub { i } | } sub { i=1..7 }$
from $bold V vec$
to the other vertices.
Vectors $bold R vec sub i$ may coincide or have length=0,
${ | bold R vec sub i | } sub i=1..7 >= 0$.
Examples of this type of solid are the wedge, box, pyramid, etc.
.KF
.PS
scale=300
box invis ht 256 wid 740 with .sw at 0,0
"\f1\s10\&5\f1\s0" at 108,184
"\f1\s10\&6\f1\s0" at 136,72
"\f1\s10\&7\f1\s0" at 80,80
"\f1\s10\&8\f1\s0" at 16,96
"\f1\s10\&9\f1\s0" at 46,138
"\f1\s10\&10\f1\s0" at 8,8
line  from 70,96 to 130,96 
line  from 120,166 to 185,166 
line  from 120,166 to 160,236 
line  from 50,206 to 160,236 
line  from 50,126 to 130,96 dashed
line  from 50,206 to 100,206 dashed
line  from 0,126 to 70,96 
line  from 50,126 to 10,26 dashed
line  from 185,166 to 160,236 
line  from 70,96 to 120,166 
line  from 70,96 to 10,26 
line  from 10,26 to 0,126 
line  from 100,206 to 160,236 dashed
line  from 50,206 to 120,166 
"\f1\s10\&Curve 4\f1\s0" at 342,28
line  from 430,164 to 406,164 
line  from 430,28 to 406,28 
"\f1\s10\&Curve 3\f1\s0" at 342,92
line  from 406,236 to 430,236 
"\f1\s10\&Curve 2\f1\s0" at 342,164
line  from 430,92 to 406,92 
"\f1\s10\&Curve 1\f1\s0" at 342,236
line  from 678,92 to 718,92 
line  from 678,28 to 718,28 
line  from 678,116 to 718,148 
line  from 678,236 to 718,236 
line  from 678,188 to 718,220 
line  from 678,164 to 718,164 
line  from 678,44 to 718,76 
line  from 606,164 to 646,164 
line  from 606,44 to 646,76 
line  from 606,116 to 646,148 
line  from 662,220 to 662,187 
"\f1\s10\&5\f1\s0" at 662,164
"\f1\s10\&1\f1\s0" at 662,236
"\f1\s10\&9\f1\s0" at 662,92
"\f1\s10\&10\f1\s0" at 662,28
line  from 662,148 to 662,116 
line  from 662,76 to 662,44 
line  from 734,217 to 734,188 
line  from 734,148 to 734,116 
"\f1\s10\&2\f1\s0" at 734,164
"\f1\s10\&10\f1\s0" at 734,28
line  from 734,77 to 734,44 
"\f1\s10\&1\f1\s0" at 734,236
"\f1\s10\&6\f1\s0" at 734,92
line  from 534,92 to 574,92 
line  from 534,28 to 574,28 
line  from 534,164 to 574,164 
"\f1\s10\&7\f1\s0" at 518,92
line  from 518,76 to 518,44 
"\f1\s10\&10\f1\s0" at 518,28
line  from 518,220 to 518,188 
line  from 462,28 to 502,28 
line  from 462,236 to 502,236 
line  from 462,92 to 502,92 
line  from 446,76 to 446,44 
"\f1\s10\&10\f1\s0" at 446,28
"\f1\s10\&6\f1\s0" at 446,92
line  from 446,116 to 446,148 
line  from 590,76 to 590,44 
"\f1\s10\&10\f1\s0" at 590,28
"\f1\s10\&4\f1\s0" at 590,164
line  from 534,236 to 574,236 
line  from 534,188 to 574,220 
"\f1\s10\&3\f1\s0" at 518,164
line  from 518,147 to 518,116 
line  from 462,44 to 502,76 
line  from 462,116 to 502,148 
"\f1\s10\&2\f1\s0" at 446,164
"\f1\s10\&8\f1\s0" at 590,92
"\f1\s10\&1\f1\s0" at 590,236
line  from 534,116 to 574,148 
"\f1\s10\&1\f1\s0" at 518,236
line  from 502,220 to 462,188 
"\f1\s10\&1\f1\s0" at 446,236
line  from 590,148 to 590,116 
line  from 462,164 to 502,164 
line  from 590,220 to 590,188 
line  from 446,188 to 446,220 
line  from 534,44 to 574,76 
line  from 606,28 to 646,28 
line  from 606,236 to 646,236 
line  from 606,188 to 646,220 
line  from 606,92 to 646,92 
line  from 0,126 to 50,126 dashed
line  from 130,96 to 185,166 
line  from 50,126 to 100,206 dashed
line  from 100,206 to 185,166 dashed
line  from 0,126 to 50,206 
line  from 10,26 to 130,96 
"\f1\s10\&1\f1\s0" at 168,248
"\f1\s10\&2\f1\s0" at 200,144
"\f1\s10\&3\f1\s0" at 128,144
line  from 192,236 to 288,236 
line  from 216,164 to 288,164 
line  from 160,92 to 288,92 
line  from 48,28 to 288,28 
"\f1\s10\&4\f1\s0" at 40,216
.PE
.ce 1
\fBFigure 1.8 \(em Faceted Polyhedron (ARS)\fR
.KE
.NH 3
Faceted Polyhedron (ARS)
.PP
Referring to figure 1.8,
any faceted polyhedron with logically rectangular structure can
be defined by listing N points on each of M curves.
In order to make this type of solid more useful, points may overlap,
and points are taken in triples to form planar facets.  Degenerate
facets (lines and points) are discarded.
.PP
One can think of this type of polyhedron as representing data obtained
by measuring ``waterlines'', i.e. by placing the object into a basin,
adding some water, and measuring N points where the water touches the object.
This procedure would be repeated M times to define the whole object.
This type of solid is really an explicit boundary representation.
.NH 3
B-spline Solids (SPLINE)
.PP
A spline solid is composed of one or more spline surfaces
(also called spline patches), which in combination completely enclose
some region in space.
This type of solid is really an implicit boundary representation.
It is important that the model editor ensures that there are no gaps
between the spline surfaces so that the primitive is actually solid.
An example of one spline surface that might make up a spline solid
is shown in plate 1.2.
.PP
A clear explanation of the fundamentals of spline surfaces can
be had from deBoor,
.[
deBoor calculating with splines
.]
.[
deBoor Practical Guide
.]
while a basis for good computer implementations can be found in Riesenfeld
.[
Riesenfeld Discrete B-splines and Subdivision
.]
and Forrest,
.[
Forrest unified approach to modelling
.]
so they will not be described further.
Details of implementations to design sculptured surfaces using
the B-spline representation can be found in Cobb
.[
Cobb design sculptured surfaces
.]
and Stay.
.[
Stay rounded edge primitives design
.]
.NH 2
The Boolean Math of Combination
.PP
Boolean set operations are a natural way to combine shapes.
The union operator gives the combined volume of two input shapes, while
the intersection operator gives the common volume of two input shapes, and
the difference (subtraction) operator acts like a ``cookie cutter'',
giving the volume of the
first input shape with the common volume of the two subtracted out.
These familiar concepts are illustrated in 4 pairs of plates generated
from three primitive solids: a box $A$, a cylinder $B$, and a wedge $C$.
The wireframe and shaded image of $A union B union C$ are plates 1.3 and 1.4,
the wireframe and shaded image of $A - B - C$ are plates 1.5 and 1.6,
the wireframe and shaded image of $(A - B) inter C$ are plates 1.7 and 1.8,
and the wireframe and shaded image of $C - A - B$ are plates 1.9 and 1.10.
Note that the wireframe approximations are for visualization purposes only;
while the wireframe outlines are only approximate,
the actual solids (e.g., the cylinder) are smooth.
For a rigorous treatment of boolean operations in CSG systems,
consult Tilove.
.[
Tilove boolean operations
.]
.NH 2
Model Structure
.PP
Most projects have a natural organization.
Similarly, geometric models which are constructed
need to have a good, logical structure which
is easy to work with and
reflects the natural structure of the project.
Larger structures should be formed from sub-elements,
facilitating top-down design of the overall structure, and
bottom-up design of highly detailed subassemblies.
This dual strategy allows
detail to be added to sub-elements only when needed.
Replicated components should not have to be re-described,
but instead should be modeled as translated \fIinstances\fR
of the prototype assembly.
Finally, there needs to be a mechanism to easily utilize
``model parts bins''.  This allows elements of other models to be
incorporated into the current model, either as an exact duplicate,
or as a point of departure for further editing.
.KF
.PS
scale=300
box invis ht 480 wid 415 with .sw at 0,0
spline   from 296,182\
to 96,140\
to 54,109\
to 33,49
"\f1\s14\&a\f1\s0" at 299,87
"\f1\s16\&M\f1\s0" at 282,97
spline   from 346,159\
to 343,112\
to 332,80\
to 303,25
"\f1\s12\&R\f1\s0" at 196,87
"\f1\s16\&M\f1\s0" at 177,98
"\f1\s12\&L\f1\s0" at 113,80
"\f1\s16\&M\f1\s0" at 96,94
"\f1\s12\&R\f1\s0" at 343,275
"\f1\s16\&M\f1\s0" at 328,292
"\f1\s12\&F\f1\s0" at 241,273
"\f1\s16\&M\f1\s0" at 224,289
"\f1\s14\&s\f1\s0" at 148,277
"\f1\s16\&M\f1\s0" at 135,288
"\f1\s14\&e\f1\s0" at 37,274
"\f1\s16\&M\f1\s0" at 22,284
"\f1\s16\&Axle-rod\f1\s0" at 303,13
"\f1\s16\&Wheel\f1\s0" at 30,27
"\f1\s16\&Engine\f1\s0" at 32,196
spline   from 281,380\
to 349,319\
to 369,276\
to 369,228
spline   from 233,353\
to 245,293\
to 270,235\
to 295,211
spline   from 187,355\
to 169,315\
to 169,274\
to 175,211
spline   from 157,387\
to 97,350\
to 58,312\
to 44,218
"\f1\s16\&Shaft\f1\s0" at 191,195
"\f1\s16\&Axle\f1\s0" at 350,195
ellipse ht 58 wid 120 at 355,194
ellipse ht 58 wid 120 at 217,387
"\f1\s16\&Car\f1\s0" at 217,385
spline   from 312,171\
to 212,84\
to 162,54\
to 73,34
.PE
.ce 1
\fBFigure 1.9 \(em Directed Acyclic Graph for Simple Car\fR
.KE
.PP
A directed acyclic graph (DAG) is a good structure to choose
to represent this type of structure in a model.
A directed acyclic graph is composed of
a collection of \fInodes\fR connected by
directed \fIarcs\fR without cycles (loops).
Each node in the directed acyclic graph has a name.
\fILeaf nodes\fR contain a single piece of geometry
(a single primitive solid), and
\fINon-terminal nodes\fR have one or more
departing \fIarcs\fR, each \fIarc\fR referring to some other node by name.
In addition to the referenced name, each
\fIarc\fR contains a boolean operator and
a 4-by-4 transformation matrix.
Refer to figure 1.9 for an example of a directed acyclic graph used to
express the relationships between various parts of a car.
.PP
As the directed acyclic graph is traversed from top to bottom,
the total effect is accumulated by multiplying the matrices together.
If $bold v vec$ is some vector in a solid at a leaf node, and it is
transformed by the matrix in a single arc, the transformed vector is
.EQ
bold v vec ~prime ~=~ bold v vec ~*~ bold M vec .
.EN
When traversing the graph from top to bottom, the matrix on the first arc
is considered $bold M vec sub 1$, and the matrix on the final arc is
$bold M vec sub n$.  Thus, the final value of a vector is found by
.EQ
bold v vec ~prime ~=~ bold v vec ~*~ bold M vec sub n ~*~ ... ~*~ bold M vec sub 1
.EN
In the example of the car in figure 1.9, a vector in the left wheel on
the front axle would be
.EQ
{ bold v vec ~prime } sub wheel ~=~ { bold v vec } sub wheel
 ~*~ bold M vec sub L ~*~ bold M vec sub F .
.EN
Each matrix is a 4-by-4 Homogeneous Transform Matrix,
which may represent any combination of
rotation,
scaling (uniform or affine), or translation.
.EQ
bold v vec mark =~ left [ x ~ y ~ z ~ w right ]
.EN
.EQ
bold v vec prime lineup =~
left [ x prime y prime z prime w prime right ]
= left [
{ x prime } over { w prime }
{ y prime } over { w prime }
{ z prime } over { w prime }
1  right ]
.EN
.EQ
bold v vec prime lineup =~ bold v vec ~*~ bold M vec
~=~ left [  x ~ y ~ z ~ w  right ]
* left [ matrix {
col { alpha r above r above r above DELTA x }
col { r above beta r above r above DELTA y }
col { r above r above gamma r above DELTA z }
col { 0 above 0 above 0 above { 1 over s } }
} right ]
.EN
Here, the nine $r$ elements specify the rotation,
$alpha$, $beta$, and $gamma$ specify the single-axis scaling factors
(affine transformation),
$s$ specifies the uniform scaling factor, and
$DELTA x$, $DELTA y$, and $DELTA z$ specify the translation distances.
Note that the three elements usually used for perspective transformations
are zero.  Perspective transformations are used for viewing only,
and should not be part of a model matrix.
For more details on homogeneous coordinates
and homogeneous transform matrices, consult
pp. 491-501 in Newman and Sproul,
.[
Newman Sproul principles
.]
and also see pp. 46-88 in Rogers and Adams.
.[
Rogers Adams mathematical elements
.]
.NH 2
References
.PP
For reviews of the solid modeling field in general, see
Requicha,
.[
Requicha Historical Summary
.]
Johnson,
.[
Johnson capabilities of solid modeling
.]
and Baer.
.[
Baer geometric modelling survey
.]
For more information on current solid modelers, the interested reader is
referred to
Wyvil,
.[
Wyvil Kunii functional model for constructive solid geometry
.]
Boyse,
.[
Boyse GMSolid
.]
Muuss,
.[
Muuss GED Interactive solid modeling system
.]
and Brown.
.[
Brown PADL-2
.]
.NH 2
History of Solid Modeling at BRL
.PP
The Ballistic Research Laboratory has a long history of
innovation in computer science, starting with the world's first electronic
digital computer, ENIAC, built for BRL by the Moore School of Engineering.
In the early 1960s, BRL retained
the Mathematical Applications Group, Inc. (MAGI)
to develop a geometric description technique suitable for computer
analysis of the survivability of armored military vehicles.
This culminated in the development of the MAGIC solid modeling
system and shotline (ray-tracing) code in 1966,
.[
MAGI geometric description technique
.]
which was adopted and documented by a tri-service Joint Technical
Coordinating Group for Munitions Effectiveness
.[
MAGIC User Manual
.]
.[
MAGIC Analyst Manual
.]
and also resulted in a number of other papers being published.
.[
Goldstein magi visual simulation
.]
Further development at BRL evolved the MAGIC ray-tracing code into
the GIFT (Geometric Information from Targets) ray-tracing code,
.[
GIFT input requirements
.]
.[
GIFT output options
.]
while MAGI pursued in-house developments which eventually resulted in
the commercial Synthavision system.
.[
Goldstein modelling with synthavision system
.]
.[
Goldstein bounding edges of synthavision model
.]
.PP
At BRL, the original GIFT
models were prepared laboriously by hand.
Each solid was described by dozens of parameters entered on punched cards.
In GIFT descriptions, only one level of model structure is available,
so good model structure was difficult to achieve.
These difficulties notwithstanding, BRL built approximately 150 models
for the GIFT system over a span of 14 years.
With the exception of simple line drawings of the models,
none of these models had ever been seen, and no graphical tools
for viewing or manipulating them existed.
.PP
In late 1979, the author
began an independent, unfunded research effort to investigate
the use of three-dimensional graphics display hardware to assist in
the development of combinatorial solid geometry descriptions of
military vehicles.  The success of this effort
prompted the development in early 1980 of a special database to describe the
hierarchical relationships between the
sub-systems of the vehicles being modeled.
Geometry so described could be viewed and modified using a
special graphics editor called GED,
.[
Weaver Muuss interactive construction
.]
documented in a monochrome movie
which demonstrated the capabilities of the GED software.
.PP
In 1981, BRL initiated an industry-wide search for
computer aided design systems capable of meeting BRL's expanding
requirements.  Many systems were evaluated, but none met BRL's complex
needs, and the decision was made to enhance the in-house software.
The result was a state-of-the-art software package
capable of meeting BRL's needs for vehicle assessment.
In early 1982, the first dedicated DEC PDP-11/70 and associated
graphics displays were installed, creating BRL's
first production interactive CAD facility.
.[
Muuss GED interactive solid modeling
.]
An early rendering produced by this system is shown in plate 1.11.
Later, GED was extended to have multi-display capability;
the new version, MGED, went into production in 1984.
.PP
In April 1984, a ``fast prototype'' for a new ray-tracing
code was designed and implemented in one week;  the team effort to
develop the full implementation continued through 1984.
In July 1985, the results of recent research in techniques
for decreasing the computational expense of ray-tracing
.[
Kaplan
.]
were extended
in several simple but significant ways, resulting in substantially
higher performance for the RT library.
In summer 1985, RT reached production status.
.PP
The RT library has permitted other BRL
researchers to implement capabilities that were not possible
using earlier software, including bi-static lighting models, and models of
laser illumination.  A project to redesign all
of BRL's applications codes around the power of the RT library was begun.
.PP
In mid 1985, the RT code was extended for fully parallel operation
developed for execution on the BRL HEP Supercomputer.
In late 1985, BRL began to experiment with ray-tracing
fractal clouds and frequency-controlled random terrain, and
began experiments in motion control and animation.
Coupling this animation capability with the fully parallel HEP
version of the RT code
culminated in a 3 minute medium-resolution computer
generated animation titled:  \fI``A Quick Run Through The M-2 Bradley''\fR.
.PP
Since the adoption of GED, BRL has been building
models of 15 to 20 vehicles annually, usually
producing between 3 and 12 variations of each.
Most of these models have more than 2000 components, with
the larger models often having in excess of 5000 components.
