|
Parametric representation
3D objects which we consider (curves, surfaces) often have complex
shapes, and they cannot be represented by simple analytical functions.
So we have to represent curves and surfaces by parts.
Within each part, geometric charactersistics, like position vector,
depend on a parameter (for segments or curves) or on two parameters
(for surfaces). Parameter values for segments and patches range
from 0.0 to 1.0; for a curve - from 0.0 to its length.

Continuity and smoothness of parametric curves and surfaces at the
joints is controlled by parametrisation on both sides of the joints.
For parametric curves nonuniqueness is easily treated :

As we need to estimate tangents, normals and curvatures, we need
a kind of parametrisation which enables easy differentiation. From
this point of view, polynomials of not too high degree are very
convenient. Polynomials of high degree require a great number of
coefficients, the geometrical sense of them is hardly understandable.
Moreover, higher-degree polynomials often cause geometric fluctuations
of their shape.
The qubic equations happened to be a good compromize for many
applications.
Basic geometry class CXMMGeometry
CXMMGeometry is a basic class for any geometry we will consider later.
its descendants will be a segment, a curve, a patch, a collection of
patches etc.
all geometry representations are parametric; we have only
one parameter for one-dimensional geometry (a segment);
for two-dimensional - two parameters U and V are valid. Parameters
for segments and patches change from 0.0 to 1.0; for a curve -
from 0.0 to its length.
any geometry may contain a list of other geometries,
like a patch that contains four segments as its boundaries;
like a structure which may contain arbitrary number of patches,
so we make any geometry contain a list of pointers to other
geometries; we must define this class (CXMMList) to contain
this list of pointers to other geometries
|