Applying angular velocity to a rotation matrix I have a very simple question. In our project we store an object's orientation as a 3x3 matrix which holds the orthonormal base of that object's local space. For instance if the object is aligned with the axis of the world, then its orientation matrix is :
1 0 0
0 1 0
0 0 1

Now we store the angular velocity as a vector that contains values in rad/s around each of the world's axis. For example if the object should rotate around the world's y axis at 20 rad/s, then the angular velocity is
0 20 0

My question is then, say we want to apply this velocity over 1 second to the orientation matrix, how would we do this?
 A: The rate of change of the rotation matrix $\boldsymbol R$ is
$$ \dot{\boldsymbol{R}} = \vec{\omega} \times \boldsymbol{R} $$
where $\vec\omega\times = \begin{pmatrix} 
0 & -\omega_z & \omega_y \\
\omega_z & 0 & -\omega_x \\
-\omega_y & \omega_x & 0 \end{pmatrix}$ is the cross product operator in 3x3 form.
So if the position of a point A rotating on a frame is given by $\vec{r}_A = \vec{r} + \boldsymbol{R} \,\vec{p} $ where $\vec{p}$ is the position in local coordinates and $\vec{r}$ the location of the frame, the kinematics are
$$ \dot{\vec{r}}_A = \dot{\vec{r}} + \dot{\boldsymbol R}\,\vec{p} \\
 \vec{v}_A = \vec{v} + \vec{\omega} \times (\boldsymbol{R}\,\vec{p}) $$
$$ \dot{\vec{v}}_A = \dot{\vec{v}} +\dot{\vec{\omega}} \times (\boldsymbol{R}\,\vec{p}) + \vec \omega \times (\dot{\boldsymbol{R}}\,\vec{p}) \\
 \vec{a}_A = \vec{a} + \vec{\alpha}\times(\boldsymbol{R}\,\vec{p}) + \vec\omega\times\vec\omega\times(\boldsymbol{R}\,\vec{p})
$$
A: From Goldstein, chapter 4 eqn 4-92', for a finite rotation the change $\boldsymbol{\Delta r}$  caused by rotating a vector $\boldsymbol{r}$ through an angle $\Phi$  about a direction defined by a unit vector $\boldsymbol{n}$ ($\Phi$ positive for a counter-clockwise rotation), to a final position $\boldsymbol{r'}$ is given by:
$$ \boldsymbol{\Delta r} = \boldsymbol{r'-r} =
[\boldsymbol{n} (\boldsymbol{n \cdot r} ) - \boldsymbol{r} ] [ 1 - \cos \Phi ] 
+ (\boldsymbol{n \times r}) \sin \Phi $$
Relating this equation to your situation, with an angular momentum vector $\boldsymbol{\omega}$ applied for a time $t$:  
$$ \boldsymbol{n} = \frac{\boldsymbol{\omega}}{|\boldsymbol{\omega}|} , 
\Phi = |\boldsymbol{\omega}| \, t $$
Since your angular velocity vector $\boldsymbol{\omega}$ is given with respect to the fixed world coordinate system  $\boldsymbol{x_1, x_2, x_3}$, it's straightforward to compute components in that basis:
$$ \Delta r'_i = \left[ n_i \sum_{j=1}^3\left(n_j r_j \right) - r_i \right][1-\cos \Phi] 
  + \sum_{j,k=1}^3 \left( \epsilon_{ijk} n_j r_k \right) \sin \Phi $$
In particular, these formulas apply to the basis vectors of your object's local space, so you can use them to evolve your storage matrix.  
For the specific example you mention, $\boldsymbol{n = x_2}$ and $\Phi =20$ rad/s $* 1 $s $ = 20 $ rad.  Plugging in the 3 object basis vectors $\boldsymbol{x'_1, x'_2, x'_3}$ (which in this case are just equal to the world basis vectors $\boldsymbol{x_1, x_2, x_3}$ respectively) for $\boldsymbol{r}$, you can see that:


*

*The $\boldsymbol{x'_2}$ body axis is unchanged (as expected for a vector parallel to the angular velocity)

*$\boldsymbol{x'_1}$ and $\boldsymbol{x'_3}$ rotate around a unit circle (again as expected).

