# 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:

1. Domain :
While no representation can describe all possible solids, a representation should be able to represent a useful set of geometric objects.
2. 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.
3. 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.
4. Accuracy :
A representation is said accurate if no approximation is required.
5. 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.
6. 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.
7. 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.