RTCQuaternionDecomposition - structure that represents a quaternion decomposition of an affine transformation
struct RTCQuaternionDecomposition
{
float scale_x, scale_y, scale_z;
float skew_xy, skew_xz, skew_yz;
float shift_x, shift_y, shift_z;
float quaternion_r, quaternion_i, quaternion_j, quaternion_k;
float translation_x, translation_y, translation_z;
};
The struct RTCQuaternionDecomposition represents an affine transformation decomposed into three parts. An upper triangular scaling/skew/shift matrix
$$ S = \left( \begin{array}{cccc} scale_x & skew_{xy} & skew_{xz} & shift_x \\ 0 & scale_y & skew_{yz} & shift_y \\ 0 & 0 & scale_z & shift_z \\ 0 & 0 & 0 & 1 \\ \end{array} \right), $$
a translation matrix
$$ T = \left( \begin{array}{cccc} 1 & 0 & 0 & translation_x \\ 0 & 1 & 0 & translation_y \\ 0 & 0 & 1 & translation_z \\ 0 & 0 & 0 & 1 \\ \end{array} \right), $$
and a rotation matrix R, represented as a quaternion
quaternion˜r˜â+âquaternion˜i˜ iâ+âquaternion˜j˜ iâ+âquaternion˜k˜ k
where i, j k are the imaginary quaternion units. The passed quaternion will be normalized internally.
The affine transformation matrix corresponding to a RTCQuaternionDecomposition is TRS and a point pâ=â(p˜x˜,p˜y˜,p˜z˜,1)ˆTˆ will be transformed as
pâ²â=âT R S p.
The functions rtcInitQuaternionDecomposition, rtcQuaternionDecompositionSetQuaternion, rtcQuaternionDecompositionSetScale, rtcQuaternionDecompositionSetSkew, rtcQuaternionDecompositionSetShift, and rtcQuaternionDecompositionSetTranslation allow to set the fields of the structure more conveniently.
No error code is set by this function.
[rtcSetGeometryTransformQuaternion], [rtcInitQuaternionDecomposition]