[ODE] RE: Angular velocity

Yefei He yhe at nads-sc.uiowa.edu
Thu Apr 14 17:20:50 MST 2005

Hi, Jon, 

    The source codes are in rotation.cpp. I also feel one of them are wrong.

I interprete _R(m, n) as mth row and nth column, so my layout of the matrix 

   _R(0,0)  _R(0,1)  _R(0,2) 
   _R(1,0)  _R(1,1)  _R(1,2) 
   _R(2,0)  _R(2,1)  _R(2,2) 

    It looks to me in ODE the matrix is transposed, by looking at the 
source code for dRFromEulerAngle(R, phi, theta, psi): 

   cpsi*ctheta                     spsi*ctheta                     -stheta 
   cpsi*stheta*sphi - spsi*cphi    spsi*stheta*sphi + cpsi*cphi
   cpsi*stheta*cphi + spsi*sphi    spsi*stheta*cphi - cpsi*sphi

    and so matrix multiplication is applied in the left to right order. If 
that's the case, then the function dRFromAxisAngle() is wrong, and angular 
velocity is wrong too, because ODE has: 

    dRFromAxisAngle( R, 1, 0, 0, a ) 
    1       0       0 
    0    cos(a) -sin(a) 
    0    sin(a)  cos(a) 

    dRFromAxisAngle( R, 0, 1, 0, a ) 
 cos(a)     0    sin(a) 
    0       1       0 
-sin(a)     0    cos(a) 

    dRFromAxisAngle( R, 0, 0, 1, a ) 
 cos(a) -sin(a)     0 
 sin(a)  cos(a)     0 
    0       0       1 

    They match the rotation matrices that are intended to be applied in the 
right to left order, instead of the transposed ones. However things do match
I negate either all the Euler angles, or the angles in dRFromAxisAngle() and
angular velocity. I didn't check the other rotation functions. Perhaps all 
others match dRFromAxisAngle(). 

    Best Regards, 


> -----Original Message-----
> From: Jon Watte [mailto:hplus-ode at mindcontrol.org]
> Sent: Thursday, April 14, 2005 4:38 PM
> To: Yefei He; ode at q12.org
> Subject: RE: [ODE] Angular velocity
> >     That means Euler angles need to be negated to match the
> results of
> > rotation around x, y, or z axis. The discrepancy between
> Euler angles
> > and angular velocity is the same.
> I have no idea. That seems wrong.
> Note that your illustration doesn't tell me whether you use row
> vectors or column vectors, nor whether you interpret the rotation 
> matrices in row-major or column-major order, so it's hard to tell 
> WHICH one of them is wrong -- but one is wrong.
> Grep the ODE internal source for these functions; chances are, only
> one of them is used, and chances are, that one is right.
> Cheers,
> 			/ h+

More information about the ODE mailing list