[Physics] How to prove that any rotation can be represented by 3 Euler angles

classical-mechanicslie-algebrarigid-body-dynamicsrotation

How can one prove that any rotation of a rigid object in 3-dimensional (3D) space can be represented by a sequence of three rotations around pre-fixed axes by 3 Euler angles? I see this statement in many textbooks, but so far I did not find a proof of the statement.

I do understand that 3 parameters are generally needed to represent rotation of a 3D object (e.g. from Goldstein, Poole, and Safko, Classical Mechanics, 3rd Ed. Ch. 4). However, I can not be sure that 3 Euler angles can be such 3 parameters.

For now, I accept that, for any 3D rotation, there exists a unique matrix in the group SO(3) that transforms the coordinates of a point in the rotated object. I also accept that such a matrix for the rotation around the $z$-axis by angle $\alpha$ is expressed as
\begin{equation}
R_z (\alpha) =
\begin{pmatrix}
\cos \alpha & \sin \alpha & 0 \\
-\sin \alpha & \cos \alpha & 0 \\
0 & 0 & 1
\end{pmatrix},
\end{equation}
and that rotation around $y$-axis has a similar matrix representation.
Therefore, I understand that for a given $A \in \mathrm{SO}(3)$, I can calculate the Euler angles by comparing 3 elements of $A$ (e.g. some of the elements in the 3rd row and 3rd columns in the convention adopted below) with the following product of 3 matrices corresponding to the rotations by 3 Euler angles,
\begin{equation}
R_z (\alpha)
R_y (\beta)
R_z (\gamma) =
\begin{pmatrix}
\cos \alpha & \sin \alpha & 0 \\
-\sin \alpha & \cos \alpha & 0 \\
0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
\cos \beta & 0 & -\sin \beta \\
0 & 1 & 0 \\
\sin \beta & 0 & \cos\beta
\end{pmatrix}
\begin{pmatrix}
\cos \gamma & \sin \gamma & 0 \\
-\sin \gamma & \cos \gamma & 0 \\
0 & 0 & 1
\end{pmatrix}.
\end{equation}
However, I can not be sure if the calculated Euler angles always equate the other elements not used in the calculation.

Is there a simple proof without going through much algebraic manipulation?

Best Answer

There's a constructive proof that can be understood intuitively. I assume z is vertical and y is forward/backward. You rotate the object about the z-axis until the top is somewhere on the xz plane i.e. y=0. This makes the top of the object point perpendicular to the y-axis, so you can rotate about the y-axis until it points up. And now you just need to rotate it on the z-axis until forward points in the right direction.

If you want to know what the original rotation was, just take the opposite of each of those steps and put them in reverse order. For example, if you rotated 10°, -30°, 50°, then to get the original rotation from the correct rotation it's just -50°, 30°, -10°.

This sequence of operations can always be done regardless of how an object is oriented. It's not necessarily unique. If up is already pointing up, then it will be on the correct plane no matter how much you rotate about the z-axis. But the point is that there is some rotation about the z-axis that leaves it on the correct plane, which there is.

Edit:

If you want something strictly more mathematical, suppose you have an orthogonal frame of vectors, $x = (x_1,x_2,x_3), y = (y_1,y_2,y_3),$ and $z = (z_1,z_2,z_3)$.

$z$ is the top of the object, so first we rotate it so $z'_2 = 0$. We just rotate it by $\arctan\frac{z_2}{z_1}$, and it ends up pointing at $z' = \left(\pm\sqrt{z_1^2+z_2^2},0,z_3\right)$. And rotate it another $180^\circ$ if that got a negative instead of a positive, so it's $z' = \left(\sqrt{z_1^2+z_2^2},0,z_3\right)$. $\arctan\frac{z_2}{z_1}$ is only really undefined in the case of $z_1=z_2=0$, in which case don't rotate it at all.

Now we rotate on the $y$-axis by $\arctan\frac{\sqrt{z_1^2+z_2^2}}{z_3}$ and we get $z'' = \left(0,0,\sqrt{z_1^2+z_2^2+z_3^2}\right)$ which must be $(0,0,1)$ since it's a unit vector. Again, if it's undefined, we don't need to rotate it.

Since $y \perp z$ and we're only rotating, $y'' \perp z''$.

From there, we know $y''_3 = 0$, so we have $y'' = (y''_1,y''_2,0)$.

Just rotate it on the $z$-axis by $\arctan\frac{y''_1}{y''_2}$ plus an extra $180^\circ$ if it faces the wrong way, and we get $y''' = \left(0,\sqrt{y''^2_1+y''^2_2},0\right)$. And that's just $(0,1,0)$, since it's a unit vector.

In this case $y''_1$ and $y''_2$ can't both be zero, so we don't have to worry about $\arctan$ being undefined at all.

Since we rotated on the $z$-axis, and $z''$ was already on the $z$-axis, $z''' = z''$.

All we have left is $x$. Since $x = y \times z$, and we're only rotating, $x''' = y''' \times z'''$.

$x''' = (0,1,0) \times (0,0,1)$

$x''' = (1,0,0)$