I have a transformation that acts as such:


Where $R_{3\times3}$ is a yaw-pitch-roll rotation matrix, and $X, Y$ are 3D vectors.

Yaw ($\alpha$)-pitch ($\beta$)-roll ($\gamma$) rotations are the product of the 3 rotation matrices:


Given $X$ and $Y$, how can I find $\alpha$, $\beta$ and $\gamma$?

  • $\begingroup$ The solution is probably a set of equations and not unique, and I am aware of that. $\endgroup$
    – Lazlo
    Jan 5, 2012 at 1:01

1 Answer 1


The first answer to any question on how to find Euler angles is: don't; use quaternions instead.

If external factors force you to use Euler angles, you could proceed like this: If $X$ and $Y$ are identical, the rotation can be a rotation around $X$ through any angle. Otherwise, the rotation can be a rotation through any axis $A$ in the plane $A\cdot X=A\cdot Y$. If $X$ and $Y$ are antipodal, the rotation must be through an angle $\pi$. Otherwise, that plane is spanned by the two vectors $X+Y$ and $X\times Y$, so you can parametrize the possible axes as

$$A(\xi)=\cos\xi\frac{X+Y}{|X+Y|}+\sin\xi\frac{X\times Y}{|X\times Y|}$$ with $\xi\in[0,\pi[$. The rotation angle must be the angle between the perpendicular projections of $X$ and $Y$ into the plane perpendicular to the axis, which are

$$ \begin{eqnarray} X_\perp&=& X - (A\cdot X)A\\ &=&X-\cos\xi\frac{X^2+X\cdot Y}{|X+Y|}A\\ &=&X-\frac12\cos\xi\frac{(X+Y)^2}{|X+Y|}A\\ &=&X-\frac12\cos\xi|X+Y|A \end{eqnarray}$$

(where I used $X^2=Y^2$), and likewise for $Y_\perp$, so the angle between them is

$$ \begin{eqnarray} \phi(\xi) &=&\arccos\frac{X_\perp\cdot Y_\perp}{|X_\perp||Y_\perp|}\\ &=&\arccos\frac{X_\perp\cdot Y_\perp}{X_\perp\cdot X_\perp}\\ &=&\arccos\frac{X\cdot Y -\frac12\cos\xi|X+Y|A\cdot(X+Y)+\frac14\cos^2\xi |X+Y|^2}{X\cdot X -\frac12\cos\xi|X+Y|A\cdot(X+X)+\frac14\cos^2\xi |X+Y|^2}\\ &=&\arccos\frac{X\cdot Y -\frac14\cos^2\xi (X+Y)^2}{X\cdot X -\frac14\cos^2\xi (X+Y)^2}\\ &=&\arccos\frac{\cos^2\xi (X+Y)^2-4X\cdot Y}{\cos^2\xi (X+Y)^2-4X\cdot X}\\ &=&\arccos\frac{\sin^2\theta-\cos^2\theta\sin^2\xi}{\cos^2\theta\cos^2\xi-1}\;,\\ \end{eqnarray} $$

where $\theta$ is the angle between $X$ or $Y$ and $X+Y$, that is, half the angle between $X$ and $Y$.

Using $A(\xi)$ and $\phi(\xi)$, you can construct the rotation matrices $R(\xi)$ and extract the Euler angles.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.