Expand description
Rigid and similarity transforms, and general affine transforms.
Transform is a similarity: an orthonormal linear part, a uniform scale
and a translation. That covers everything a solid modeller applies to a
shape (placement, rotation, mirroring, uniform scaling) while preserving
the two properties the geometry depends on: angles are unchanged, and an
analytic surface stays the same kind of analytic surface. A cylinder
remains a cylinder.
GeneralTransform drops both guarantees, allowing non-uniform scaling and
shear. It is a separate type on purpose: applying one turns a circle into an
ellipse and a cylinder into something with no analytic form at all, so it
cannot be used interchangeably.
§Form classification
Every Transform carries a TransformKind, and applying one dispatches
on it: a translation adds a vector, the identity does nothing at all. That
matters because transforms are applied to every control point of every
curve, every vertex of every tessellation, over an entire model: the
difference between a branch and nine multiplies, repeated a hundred million
times, is real.
The kind is derived from the data rather than asserted alongside it, so it cannot drift out of agreement with the matrix it describes. Every constructor routes through one private classifier; there is no way to build a transform that claims more structure than it has.
Structs§
- General
Transform - A general affine transform: any linear part, plus a translation.
- Transform
- A similarity transform: orthonormal rotation or reflection, uniform scale, translation.
- Transform2
- A similarity transform in the plane.
Enums§
- Transform
Kind - How much structure a
Transformhas, for dispatch.