Skip to main content

Module transform

Module transform 

Source
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§

GeneralTransform
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§

TransformKind
How much structure a Transform has, for dispatch.