The quaternion representation is chosen for its compactness in representing
rotations. The orientation of the \((x,y,z)\) axes relative to the
\((i,j,k)\) axes in 3D space is specified using a unit quaternion
\([a,b,c,d]\), where \(a^2+b^2+c^2+d^2=1\). The
\((b,c,d)\) values are all that is needed, since we require that
\(a=[1-(b^2+c^2+d^2)]^{1/2}\) be non-negative.
The \((b,c,d)\) values are stored in the (quatern_b
,
quatern_c
, quatern_d
) fields.