57.10 Transforms
An affine-transform value stores translation, rotation, and scale. Components are applied in this fixed order:
scale, then rotate, then translate
Scale is stored as positive x and y factors. Separate linear2 and affine2 values represent a full matrix and translation. apply-affine and apply-matrix map a world Visual through those values. These operations also accept ordinary nested paths: a named child can be mapped inside an already-mapped group without flattening the group. Visual implementations use the decomposed affine-Visual protocol; the general-map wrapper carries full maps through a nested group tree.
A group may be translated and rotated normally, but its own scale must be uniform. A uniform parent scale and rotation compose exactly with each child’s existing decomposed transform. Allowing a non-uniform parent scale followed by a rotated child can create shear, which the decomposed transform model cannot represent. Use apply-affine on the complete top-level group when that is the intended mathematical operation.