Jump to content
  • Advertisement
Sign in to follow this  
ClementLuminy

Clarification regarding Euler angles, Matrices, Quaternions and Gimbal Lock problem

This topic is 3168 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Does anybody can confirm or infirm the following: If you have the following Euler Angle ( in degree ): E={10,15,90} If you represent this rotation using a concatenation of 3 rotation matrices built from those 3 angles such as: Mr1 = RotationMatrixAroundX( 10 ); Mr2 = RotationMatrixAroundY( 15 ); Mr3 = RotationMatrixAroundZ( 90 ); Mr = Mr1 * Mr2 * Mr3; And if you build this same rotation using 3 quaternions such as: Qr1 = RotateQuaternionAroundX( 10 ); Qr2 = RotateQuaternionAroundY( 15 ); Qr3 = RotateQuaternionAroundZ( 90 ); Qr = Qr1 * Qr3 * Qr3; Does both Mr and Qr will suffer of the gimbal lock problem ? ( I guess that yes ) Now suppose i manage to find the Axis and Angle ( I don't know how, but suppose i manage :) ) that allow me to represent the same rotation as the one defined by E. If i use this pair {Axis,Angle} to directly build my quaternion Qr or my matrix Mr ( using the adequate equations ) Does Qr and Mr will suffer of the gimbal lock problem ? ( I guess that no ) If all of that is true, can we say that the Gimbal Lock problem ONLY occur because we are applying a serie of rotation sequencialy ??( no matter which mathematical object is used to represent those rotations ) Thanks for your help. Clement

Share this post


Link to post
Share on other sites
Advertisement
Quote:
Original post by ClementLuminy
Does anybody can confirm or infirm the following:

If you have the following Euler Angle ( in degree ):
E={10,15,90}

If you represent this rotation using a concatenation of 3 rotation matrices built from those 3 angles such as:
Mr1 = RotationMatrixAroundX( 10 );
Mr2 = RotationMatrixAroundY( 15 );
Mr3 = RotationMatrixAroundZ( 90 );
Mr = Mr1 * Mr2 * Mr3;

And if you build this same rotation using 3 quaternions such as:
Qr1 = RotateQuaternionAroundX( 10 );
Qr2 = RotateQuaternionAroundY( 15 );
Qr3 = RotateQuaternionAroundZ( 90 );
Qr = Qr1 * Qr3 * Qr3;


Does both Mr and Qr will suffer of the gimbal lock problem ?
( I guess that yes )

You guess wrong. An individual rotation doesn't suffer from the gimbal lock problem.

Quote:
Now suppose i manage to find the Axis and Angle ( I don't know how, but suppose i manage :) ) that allow me to represent the same rotation as the one defined by E.

If i use this pair {Axis,Angle} to directly build my quaternion Qr or my matrix Mr ( using the adequate equations )

Does Qr and Mr will suffer of the gimbal lock problem ?
( I guess that no )

These Qr and Mr are the same Qr and Mr as before, and therefore they have the same properties.


Quote:
If all of that is true, can we say that the Gimbal Lock problem ONLY occur because we are applying a serie of rotation sequencialy ??( no matter which mathematical object is used to represent those rotations )

Since not all of that is true, perhaps I can ignore this last question. :)

Gimbal lock is a problem in the mapping of Euler angles to rotations, not a problem with the rotations themselves. In the language of differential geometry: The rotations in R^3 form a 3-dimensional differentiable manifold for which Euler angles can describe a differentiable chart that covers most rotations (a dense open set), but not all. The mapping from Euler angles to rotations in the part where it doesn't behave like a chart is degenerate and only two dimensions of the tangent space are reachable.

Without the impenetrable language, if you want to modify a rotation a little bit, you have 3 degrees of freedom to do it. However, if you use Euler angles as your representation, there will be situations where changing the 3 Euler angles a little bit will only cover 2 of those 3 degrees of freedom. We call this effect gimbal lock.

Share this post


Link to post
Share on other sites
Thanks alvaro for your answer.


In the situations you describe ( where changing the 3 Euler angles a little bit will only cover 2 of those 3 degrees of freedom ).

This lost of fredom only occur if i change my original rotation R1 to a new rotation R2 using a Euler Angle representation.

But suppose i have the rotation R1 represented using a pair Axis Angle, and i compute the same rotation R2 using an other pair of Axis Angle, then normaly this reprentation should not suffer from Gimbal Lock problem ...


Here is an other way to formulate my question:
Does Gimbal Lock only occur BECAUSE we use Euler Angle to represent a rotation ?

Share this post


Link to post
Share on other sites
Quote:
Original post by ClementLuminy
Thanks alvaro for your answer.


In the situations you describe ( where changing the 3 Euler angles a little bit will only cover 2 of those 3 degrees of freedom ).

This lost of fredom only occur if i change my original rotation R1 to a new rotation R2 using a Euler Angle representation.

But suppose i have the rotation R1 represented using a pair Axis Angle, and i compute the same rotation R2 using an other pair of Axis Angle, then normaly this reprentation should not suffer from Gimbal Lock problem ...


I believe all you said this time is basically right.


Quote:
Here is an other way to formulate my question:
Does Gimbal Lock only occur BECAUSE we use Euler Angle to represent a rotation ?

Mostly yes. There might be other representations of a rotation that introduce the same kind of problem, though. Gimbal lock occurs because we use a representation that is not a chart everywhere, but we expect it to be.

Share this post


Link to post
Share on other sites
One last question:

Can you give me some informations in order to find over the web what "chart" are I'm french so the best things would be the translation of the term "chart" in french. :)

Thanks again.

Clement

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!