RotationValue
The inherent rotation of a logical instance: a tagged representation (§RO-2a).
In the namespace construct::model. Declared in src/libs/libconstruct/construct/model/RotationValue.hpp.
Detailed description
`data` packs the mode's parameters: - Euler modes: `xyz` are the X, Y and Z angles in degrees. The mode says in which order the three axis rotations compose; the component an angle lives in does not move with the mode. - `AxisAngle`: `xyz` is the axis (any non-zero length), `w` the angle in degrees. - `Quaternion`: `xyzw` is the unit quaternion of the VISUAL rotation (`w` the scalar). Not human-editable component-wise; the Arcball edits it (§RO-5), and the overlay shows the Euler equivalent.
A `RotationValue` is a single inherent value — no wrapper resurrection, one undo entry, the fast in-place transform path — that is merely wider than the bare Euler vector it replaced, and tagged.
**The warp matrix.** Every mode describes the same thing: the matrix the shader applies to the sample point, `p' = W * p`, which is the INVERSE of the visual orientation (construct-rotation-gizmo §RG-3). `warpMatrix()` is the one meaning all modes share, and conversion between modes goes through it so the object never jumps (§RO-4a).