Quaternion to Euler or Cardan rotation angles
[angles1,angles2,Inok] = CL_rot_quat2angles(q,naxes)
This function computes the rotation angles of the 3 successive elementary rotations that correspond to a given quaternion.
Two solutions (2 sets of angles) are computed (angles1 and angles2).
The rotations are described by 3 axis numbers: 1=x-axis, 2=y-axis, 3=z-axis. The possible combinations of axis numbers correspond to:
- 6 Cardan rotations (for which all axes are different): XYZ, XZY, YXZ, YZX, ZXY and ZYX;
- 6 Euler rotations (for which 2 axes are the same): XYX, XZX, YXY, YZY, ZXZ and ZYZ.
Notes:
1) There solutions are such that:
- For Cardan angles, angles1 is the solution for which the second rotation angle is between -pi/2 and pi/2.
- For Euler angles, angles1 is the solution for which the second rotation angle is between 0 and pi.
2) Cardan and Euler angles have singularities.
- For Cardan angles, singularities occur when the second angle is close to -pi/2 or +pi/2
- For Euler angles, singularities occur when the second angle is close to 0 or pi (which implies that the identity rotation is always singular for Euler angles!)
3) The returned angles for cases close to singularities are approximate. The corresponding indices are returned in Inok.
Quaternion that defines the rotation (dim N).
Successive axes numbers : 1=x-axis, 2=y-axis or 3=z-axis (1x3 or 3x1)
First set of rotation angles [rad] (3xN)
Second set of rotation angles [rad] (3xN)
Indices for which singularities occur (1xP)
CNES - DCT/SB