Computer Graphics

Conversion between quaternions and Euler angles

158pages on
this wiki
Add New Page
Talk0 Share

Spatial rotations in three dimensions can be parametrized using both Euler angles and unit quaternions. This article explains how to convert between the two representations. Actually this simple use of "quaternions" was first presented by Euler some seventy years earlier than Hamilton to solve the problem of "magic squares." For this reason the dynamics community commonly refers to quaternions in this application as "Euler parameters".

A unit quaternion can be described as:

\mathbf{q} = \begin{bmatrix} q_0 & q_1 & q_2 & q_3 \end{bmatrix}^T
|\mathbf{q}|^2 = q_0^2 + q_1^2 + q_2^2 + q_3^2 = 1
\mathbf{q}_0 = \cos(\alpha/2)
\mathbf{q}_1 = \sin(\alpha/2)\cos(\beta_x)
\mathbf{q}_2 = \sin(\alpha/2)\cos(\beta_y)
\mathbf{q}_3 = \sin(\alpha/2)\cos(\beta_z)

where \alpha is a simple rotation angle and \beta_x, \beta_y, \beta_z, are the "direction cosines" locating the axis of rotation (Euler's Theorem).

File:Flight dynamics.jpg

Similarly for Euler angles, we use (in terms of flight dynamics):

  • Roll - \phi: rotation about the X-axis
  • Pitch - \theta: rotation about the Y-axis
  • Yaw - \psi: rotation about the Z-axis

where the X-axis points forward, Y-axis to the right and Z-axis downward and in the example to follow the rotation occurs in the order yaw, pitch, roll (about body-fixed axes).

Rotation matrices Edit

The orthogonal matrix corresponding to a rotation by the unit quaternion q is given by

 1- 2(q_2^2 + q_3^2) &  2(q_1 q_2 - q_0 q_3) &  2(q_0 q_2 + q_1 q_3) \\
2(q_1 q_2 + q_0 q_3) & 1 - 2(q_1^2 + q_3^2)  &  2(q_2 q_3 - q_0 q_1) \\
2(q_1 q_3 - q_0 q_2) & 2( q_0 q_1 + q_2 q_3) &  1 - 2(q_1^2 + q_2^2)

The orthogonal matrix corresponding to a rotation with Euler angles \phi, \theta \, \psi, is given by

\cos\theta \cos\psi & -\cos\phi \sin\psi + \sin\phi \sin\theta \cos\psi &   \sin\phi \sin\psi + \cos\phi \sin\theta \cos\psi \\
\cos\theta \sin\psi &  \cos\phi \cos\psi + \sin\phi \sin\theta \sin\psi & -\sin\phi \cos\psi + \cos\phi \sin\theta \sin\psi \\
-\sin\theta             &  \sin\phi \cos\theta                                          &   \cos\phi \cos\theta \\

Conversion Edit

By comparing the terms in the two matrices, we get poo:

 \mathbf{q} = \begin{bmatrix}
\cos (\phi /2) \cos (\theta /2) \cos (\psi /2) +  \sin (\phi /2) \sin (\theta /2) \sin (\psi /2) \\
\sin (\phi /2) \cos (\theta /2) \cos (\psi /2) -  \cos (\phi /2) \sin (\theta /2) \sin (\psi /2) \\
\cos (\phi /2) \sin (\theta /2) \cos (\psi /2) +  \sin (\phi /2) \cos (\theta /2) \sin (\psi /2) \\
\cos (\phi /2) \cos (\theta /2) \sin (\psi /2) -  \sin (\phi /2) \sin (\theta /2) \cos (\psi /2) \\

For Euler angles we get:

\phi \\ \theta \\ \psi
\end{bmatrix} =
\mbox{arctan} \frac {2(q_0 q_1 + q_2 q_3)} {1 - 2(q_1^2 + q_2^2)} \\
\mbox{arcsin} (2(q_0 q_2 - q_3 q_1)) \\
\mbox{arctan} \frac {2(q_0 q_3 + q_1 q_2)} {1 - 2(q_2^2 + q_3^2)}

Singularities Edit

One must be aware of singularities in the Euler angle parametrization when the pitch approaches \pm 90^o (north/south pole). These cases must be handled specially.

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.