.\" Automatically generated by Pandoc 1.17.0.3 .\" .TH "RTCQuaternionDecomposition" "3" "" "" "Embree Ray Tracing Kernels 3" .hy .SS NAME .IP .nf \f[C] RTCQuaternionDecomposition\ \-\ structure\ that\ represents\ a\ quaternion \ \ decomposition\ of\ an\ affine\ transformation \f[] .fi .SS SYNOPSIS .IP .nf \f[C] 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; }; \f[] .fi .SS DESCRIPTION .PP The struct \f[C]RTCQuaternionDecomposition\f[] represents an affine transformation decomposed into three parts. An upper triangular scaling/skew/shift matrix .PP .RS $$ 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), $$ .RE .PP a translation matrix .PP .RS $$ 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), $$ .RE .PP and a rotation matrix \f[I]R\f[], represented as a quaternion .PP \f[I]q\f[]\f[I]u\f[]\f[I]a\f[]\f[I]t\f[]\f[I]e\f[]\f[I]r\f[]\f[I]n\f[]\f[I]i\f[]\f[I]o\f[]\f[I]n\f[]~\f[I]r\f[]~ + \f[I]q\f[]\f[I]u\f[]\f[I]a\f[]\f[I]t\f[]\f[I]e\f[]\f[I]r\f[]\f[I]n\f[]\f[I]i\f[]\f[I]o\f[]\f[I]n\f[]~\f[I]i\f[]~\ \f[B]i\f[] + \f[I]q\f[]\f[I]u\f[]\f[I]a\f[]\f[I]t\f[]\f[I]e\f[]\f[I]r\f[]\f[I]n\f[]\f[I]i\f[]\f[I]o\f[]\f[I]n\f[]~\f[I]j\f[]~\ \f[B]i\f[] + \f[I]q\f[]\f[I]u\f[]\f[I]a\f[]\f[I]t\f[]\f[I]e\f[]\f[I]r\f[]\f[I]n\f[]\f[I]i\f[]\f[I]o\f[]\f[I]n\f[]~\f[I]k\f[]~\ \f[B]k\f[] .PP where \f[B]i\f[], \f[B]j\f[] \f[B]k\f[] are the imaginary quaternion units. The passed quaternion will be normalized internally. .PP The affine transformation matrix corresponding to a \f[C]RTCQuaternionDecomposition\f[] is \f[I]T\f[]\f[I]R\f[]\f[I]S\f[] and a point \f[I]p\f[] = (\f[I]p\f[]~\f[I]x\f[]~, \f[I]p\f[]~\f[I]y\f[]~, \f[I]p\f[]~\f[I]z\f[]~, 1)^\f[I]T\f[]^ will be transformed as .RS \f[I]p\f[]′=\f[I]T\f[]\ \f[I]R\f[]\ \f[I]S\f[]\ \f[I]p\f[]. .RE .PP The functions \f[C]rtcInitQuaternionDecomposition\f[], \f[C]rtcQuaternionDecompositionSetQuaternion\f[], \f[C]rtcQuaternionDecompositionSetScale\f[], \f[C]rtcQuaternionDecompositionSetSkew\f[], \f[C]rtcQuaternionDecompositionSetShift\f[], and \f[C]rtcQuaternionDecompositionSetTranslation\f[] allow to set the fields of the structure more conveniently. .SS EXIT STATUS .PP No error code is set by this function. .SS SEE ALSO .PP [rtcSetGeometryTransformQuaternion], [rtcInitQuaternionDecomposition]