On the top of the fourth page from here, the author trivially derives the components of angular velocity, expressed via Euler angles of the system. I fail to understand how the components of angular velocity were derived. May you please enlighten me!


2 Answers 2


Here's a straightforward but somewhat computational way. There are two steps. (1) Show how to define the angular velocity vector in terms of rotation matrices. (2) Write a general rotation in terms of Euler angles. (3) Combine (1) and (2) to get an expression for the angular velocity vector in terms of Euler angles.

Step 1. Recall that if $\mathbf x(t)$ is the position of any point in a rigid body undergoing rotation, then the motion of this vector is generated by a time-dependent rotation; \begin{align} \mathbf x(t) = R(t)\mathbf x(0) \end{align} It follows that the velocity of such a point in the body is \begin{align} \dot{\mathbf x}(t) =\dot R(t)\mathbf x(0) = \dot R(t)R^t(t)\mathbf x(t) \end{align} where here, the superscript $t$ denotes transpose, and in the second equality, I have used the first equation and the fact that for rotations, $R^t = R^{-1}$. If we use this fact again in the form \begin{align} RR^t = I \end{align} and differentiate both sides with respect to time, then the right side vanishes, and we get \begin{align} \dot R R^t = -R\dot R^t = -(\dot R R^t)^t \end{align} This shows that the matrix $\Omega \equiv\dot R R^t$ is antisymmetric, which means that there are three functions $\omega_x, \omega_y, \omega_z$ for which \begin{align} \Omega = \begin{pmatrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \\ \end{pmatrix} \end{align} It turns out that the entries of this matrix are precisely the components of the angular velocity vector $\boldsymbol\omega$. In fact, in many treatments one often defines \begin{align} \boldsymbol\omega = (\omega_x, \omega_y, \omega_z) \end{align} To convince you that this is the right definition of angular velocity, a short computation shows that for any vector $\mathbf x$, \begin{align} \Omega \mathbf x = \boldsymbol\omega\times \mathbf x \end{align} So that we recover \begin{align} \dot{\mathbf x} = \boldsymbol\omega\times\mathbf x \end{align} from the second equation above, which is a standard expression showing how the angular velocity vector generates the velocities of the points in a rigid body.

There is a subtlety that we need to be careful about however. The angular velocity components given in the notes to which you link are the components of the angular velocity in a basis rotating with the body. If we let $\mathbf e_i$ denote a non-rotating basis, adn $\mathbf u_i$ denote the basis rotating with the body, then we have $$ \mathbf u_i(t) = R(t) \mathbf e_i $$ In particular, given any vector $\mathbf w$, we can break such a vector into its components in either basis $$ \mathbf w = w_i\mathbf e_i = w_{i,B} \mathbf u_i $$ so the three-tuple $$ \mathbf w_B = w_{i,B} \mathbf e_i $$ Gives the components of any vector in the body basis. Note that the components of a vector in the body basis can be obtained from its components in the non-rotating basis as follows. $$ \mathbf w_B = R^t\mathbf w $$ In particular, the components of the angular velocity in the body basis are related to its components in the non-rotating basis by $$ \boldsymbol\omega_B = R^t\boldsymbol\omega $$

Step 2. This is actually already done in the MIT notes to which you linked. It the last equation on the third page. In the notation from what I called "step 1," we define the Euler angles as follows in terms of successive rotations that take a vector's components in the non-rotating basis, and give its components in terms of the body basis $$ R^t = R_z(\psi)R_x(\phi)R_z(\phi) $$

Step 3. We combine steps 1 and 2 to obtain an expression for $\boldsymbol\omega_B$ which gives the components of the angular velocity in the body basis. To do this, we first compute $\boldsymbol\omega$ from $\Omega = \dot R R^t$ in terms of Euler angles. Then we apply $R^t$ to $\boldsymbol\omega$ to get $\boldsymbol\omega_B$. I actually did this just now using Mathematica, and I obtained precisely the result in your linked notes: \begin{align} \omega_{x,B} &= \dot\phi\sin\theta\sin\psi +\dot\theta\cos\psi\\ \omega_{y,B} &= \dot\phi\sin\theta\cos\psi - \dot\theta\sin\psi\\ \omega_{z,B} &= \dot\phi\cos\theta+\dot\psi \end{align}

  • $\begingroup$ Are you sure in the second equation you mean $\dot{\mathbf x}(t) =\dot R(t)\mathbf x(0) = \dot R(t)R^t(t)\mathbf x(0)$? I would think the second equality looks odd. Maybe you mean $\dot{\mathbf x}(t) =\dot R(t)\mathbf x(0) = \dot R(t)R^t(t)\mathbf x(t)$? $\endgroup$
    – resgh
    Commented Aug 13, 2013 at 3:26
  • $\begingroup$ Also, if you wanted to avoid your method looking too 'computational', maybe instead of taking the components of $\omega$ directly from $\Omega$ you could get $\omega$ from $\Omega$ via applying a Hodge dual operation. $\endgroup$
    – resgh
    Commented Aug 13, 2013 at 3:31
  • 1
    $\begingroup$ @namehere Thanks that was most certainly a typo. Yeah I didn't think discussion of the hodge dual was really appropriate at this level; but that's certainly relevant. Thanks for the comments. $\endgroup$ Commented Aug 13, 2013 at 3:37
  • $\begingroup$ hi I have one nitpick and one very stupid question. in the equation at step 2 $\phi$ is written twice. did you mean $\theta$? The stupid question goes like: "what is rotating here?" The body frame is rotating with respect to the inertial frame, but something else is rotating with respect to the body frame whose angular velocity we want to calculate wrt the body frame? Otherwise, if it's just the body frame rotating, shouldn't be the angular velocity null with respect to it? thanks $\endgroup$ Commented May 11 at 9:59

I assume you know about rotation matrices, and so for a sequence rotations about Z-X-Z with angles $\phi$, $\theta$ and $\psi$ repsectively you have

$$ \vec{\omega} = \dot{\phi} \hat{z} + T_1 \left( \dot{\theta} \hat{x} + T_2 \left( \dot{\psi} \hat{z} \right) \right) $$

The logic here is apply a local spin of $\dot{\phi}$, $\dot{\theta}$ and $\dot{\psi}$ on the local axes in the sequence.

  1. Apply spin $\dot{\phi}$ about local Z and then rotate by $T_1$
  2. Apply spin $\dot{\theta}$ about local X (rotated by $T_1$) and then rotate by $T_2$
  3. Apply spin $\dot{\psi}$ about local Z (rotated by $T_1 T_2$).


There is a way to formally derive the above using the identity $\dot T = \vec\omega \times T$ but it is rather involved for 3 degrees of freedom.

For two degrees of freedom it goes like this. With a rotation matrix $T= T_1 T_2$ (defined as above) the time derivative is

$$ \begin{aligned} \frac{{\rm d} T}{{\rm d} t} & = \dot{T}_1 T_2 + T_1 \dot{T}_2 \\ & = \left( (\dot{\psi} \hat{z}) \times T_1 \right) T_2 + T_1 \left( (\dot{\theta} \hat{x}) \times T_2 \right) \\ & = (\dot{\psi} \hat{z}) \times \left( T_1 T_2 \right) + (T_1 (\dot{\theta} \hat{x})) \times \left( T_1 T_2 \right) \\ & = \left(\dot{\psi} \hat{z} + T_1 (\dot{\theta} \hat{x}) \right) \times (T_1 T_2) \\ & = \left(\dot{\psi} \hat{z} + T_1 (\dot{\theta} \hat{x}) \right) \times T = \vec{\omega} \times T \end{aligned} \\ \vec{\omega} = \dot{\psi} \hat{z} + T_1 (\dot{\theta} \hat{x}) $$

using the distributed property $T (\vec{a} \times \vec{b} ) = (T \vec{a}) \times (T \vec{b} )$.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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