• Create Account

## Quaternion To Euler

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

No replies to this topic

### #1Alundra  Members

2010
Like
0Likes
Like

Posted 02 August 2014 - 10:23 AM

Hi all,

recently I have added a quaternion to euler to have a visual value of the quaternion but of course the value is not used in game.

Here the code I use :

void CQuaternion::ToEulerAngles( float* X, float* Y, float* Z ) const
{
const float SingularityTest = x*y + z*w;
if( SingularityTest > 0.4999995f )
{
*Y = 2.0f * CMath::ATan2( x, w );
*Z = CMath::HALF_PI;
*X = 0.0f;
}
else if( SingularityTest < -0.4999995f )
{
*Y = -2.0f * CMath::ATan2( x, w );
*Z = -CMath::HALF_PI;
*X = 0.0f;
}
else
{
const float zz = z * z;
*Y = CMath::ATan2( 2.0f * (y*w - x*z), 1.0f - 2.0f * (y*y + zz) );
*Z = CMath::ASin( 2.0f * SingularityTest );
*X = CMath::ATan2( 2.0f * (x*w - y*z), 1.0f - 2.0f * (x*x + zz) );
}
}

http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/

Is it a correct way to do or a better way exists ?

Thanks for the help

Edited by Alundra, 14 December 2015 - 12:12 PM.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.