Solid Representations: An Introduction
Most geometric objects we see every day are solids. That is, they are
geometric objects with interior.
Solids can be very simple like a cube or very complex like a piston
engine. To be processed by computers, solids must have some representations
that can describe the geometry and characteristics completely.
In fact, a good representation should address the following issues:
- Domain :
While no representation can describe all possible solids,
a representation should be able to represent a useful
set of geometric objects.
- Unambiguity :
When you see a representation of a solid, you will know what is
being represented without any doubt. An unambiguous
representation is usually referred to as a complete
one.
- Uniqueness :
That is, there is only one way to represent a particular solid.
If a representation is unique, then it is easy to determine if
two solids are identical since one can just compare their
representations.
- Accuracy :
A representation is said accurate if no approximation
is required.
- Validness :
This means a representation should not create any invalid or
impossible solids. More precisely, a representation will not
represent an object that does not correspond to a solid.
- Closure :
Solids will be transformed and used with other operations such
as union and intersection. "Closure" means that
transforming a valid solid always yields a valid solid.
- Compactness and Efficiency :
A good representation should be compact enough for saving space
and allow for efficient algorithms to determine desired
physical characteristics.
These issues may be contradictory with each other. For efficiency purpose,
a curvilinear solid may be approximated by a polyhedron. There are many
efficient and robust algorithms for handling polyhedra; however, accuracy may
not be maintained in the process of approximation. For example, given two
curvilinear solids that are tangent to each other, this tangency may disappear
after converting to a polyhedron.
Problems occur even for the polyhedra world. Many graphics APIs such as
PHIGS PLUS and OpenGL have built-in data structures for representing
polyhedra; but, these representations could generate invalid solids.
There are representations that can always represent valid solids; but, these
representations are in general more complex than those available in graphics
APIs.
In summary, designing representations for solids is a difficult job and
compromises are often necessary. This course will only discuss the following
representations:
wireframes, boundary representations and constructive
solid geometry.