[ODE] dRFromEulerAngles interpretation
Mauro G. Todeschini
mauro2006todeschini at itia.cnr.it
Tue Oct 10 12:46:44 MST 2006
Jon Watte (ODE) wrote:
> Maybe the error of the order is attempting to cancel out the error of
> the rotation direction?
To be honest I think that who added dRFromEulerAngles to ODE code wanted
for some reason to use clockwise angles, or didn't care to follow other
conventions, or perhaps he copied It from another source without
catching the different convention.
>
> I've never used the function, and I'm not sure whether ODE does
> internally. If ODE uses it internally, then I would be very careful
> about trying to change it. If it's just a convenience, then there's some
> chance that not many people use it, and it's just slipped through the
> cracks.
Yes I agre with you: I don't know if It is used internally in ODE but
the function has been like this for a long time probably and It is not a
good idea to change It (and break users applications). It's a good idea
to document this strange behaviour (if other experts agree with this
analisys).
Bye
>
> Cheers,
>
> / h+
>
> Mauro G. Todeschini wrote:
>> Hi,
>> I looked at the ODE's code just to understand something of the way It
>> works but I encoutered the same problem Yefei He pointed out over a year
>> ago. In my emails of last week I thought I wasn't understanding
>> row-major, column-major issues... but after reading more code and
>> experimenting I think the problem is in the function dRFromEulerAngles.
>> To my understanding dRFromEulerAngles applies a rotation about Z axis
>> followed by a rotation about Y axis followed by a rotation about X axis.
>> The order of the rotations to be onest is uncommon (or at least It is
>> not a standard) and I think It would be a good idea to point It out in
>> the documentation.
>> But I don't understand why the rotations are clockwise (I'm considering
>> a right-hand reference system, row-major matrixes and column vector on
>> the right). In this case rotation are usually conterclockwise in
>> letterature and even inside ODE dRFromAxisAndAngle seems to follow
>> counterclockwise rotations.
>> Anyone knows the reason of clockwise rotations in dRFromEulerAngles? Is
>> It a bug or a feature? :D
>>
>> Bye
>>
>> Yefei He wrote:
>>
>>> Hi,
>>>
>>> I think Left handed rule explains my problem. So this means a positive
>>> angle rotates the object clockwise since rotation is in a left-handed
>>> coordinate system. My problem is then, how are the angles in the function
>>> dRFromEulerAngles( R, phi, theta, psi ) interpreted? I use it to set the
>>> rotation angles. I did a comparison of this to dRFromAxisAngle( R, ax, ay,
>>> az, angle ). And I noticed the differences in the rotation matrix that
>>> they generate:
>>>
>>> dRFromEulerAngles( R, a, 0, 0 )
>>> 1 0 0
>>> 0 cos(a) sin(a)
>>> 0 -sin(a) cos(a)
>>>
>>> dRFromEulerAngles( R, 0, a, 0 )
>>> cos(a) 0 -sin(a)
>>> 0 1 0
>>> sin(a) 0 cos(a)
>>>
>>> dRFromEulerAngles( R, 0, 0, a )
>>> cos(a) sin(a) 0
>>> -sin(a) cos(a) 0
>>> 0 0 1
>>>
>>> and
>>> 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
>>>
>>> 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. My next question is then, is there a
>>> reason why Euler angles are interpreted this way in ODE? I thought
>>> in the left-handed system, A positive Euler angle would also mean a
>>> clockwise rotation around axis?
>>>
>>> Yefei
>>>
>> _______________________________________________
>> ODE mailing list
>> ODE at q12.org
>> http://q12.org/mailman/listinfo/ode
>>
>>
>>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
More information about the ODE
mailing list