# [ODE] RE: Angular velocity

Jon Watte hplus-ode at mindcontrol.org
Thu Apr 14 16:24:13 MST 2005

```> 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)

That still doesn't say anything, because you need to be specific about
whether you are using row vectors (on the left) or column vectors (on
the right), AND you need to specify whether the layout is row major or
column major.

IIRC, OpenGL is row major, assuming row vectors on the left, which
means the same thing as being column major, assuming column vectors on
the right. I believe ODE actually flips one of these conventions --
which of the two you choose to flip really doesn't matter, as the data
comes out the same anyway.

>     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:

I'm pretty sure angular velocity is right, so instead the matrix is
not transposed, but instead the storage and/or vector convention is
different from your expectation. Which means that likely the Euler angle
functions are the wrong ones.

Cheers,

/ h+

```