How can I get Pitch, Yaw and Roll values from matRotation?
Edited by Medo3337, 19 May 2012 - 04:50 PM.
Posted 19 May 2012 - 10:53 PM
void ToEulerAngles( float& fAngleX, float& fAngleY, float& fAngleZ )
{
static float fRadiansToDegree = 180.0f / 3.1415926f;
fAngleY = asinf( M[8] ); // Calculate Y-axis angle
float fCY = cosf( fAngleY );
fAngleY *= fRadiansToDegree;
if ( fabsf( fCY ) > 0.005f )
{
float ftrx = M[10] / fCY; // No, so get X-axis angle
float ftry = -M[9] / fCY;
fAngleX = atan2f( ftry, ftrx ) * fRadiansToDegree;
ftrx = M[0] / fCY; // Get Z-axis angle
ftry = -M[4] / fCY;
fAngleZ = atan2f( ftry, ftrx ) * fRadiansToDegree;
}
else
{
// Gimbal lock?
fAngleX = 0; // Set X-axis angle to zero
float ftrx = M[5]; // And calculate Z-axis angle
float ftry = M[1];
fAngleZ = atan2f( ftry, ftrx ) * fRadiansToDegree;
}
if ( fAngleX < 0 )
{
fAngleX += 360;
}
if ( fAngleY < 0 )
{
fAngleY += 360;
}
if ( fAngleZ < 0 )
{
fAngleZ += 360;
}
}
struct tStruct
{
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
};
union
{
tStruct ms;
float m[4][4];
float M[16];
};
Edited by Endurion, 19 May 2012 - 10:55 PM.
Posted 20 May 2012 - 02:47 AM
matRotation?
The method I want is to be able to pass matRotation which is "D3DXMATRIX" and get the rotation X, Y and Z.
D3DXMATRIX.
Edited by Medo3337, 20 May 2012 - 03:09 AM.
Posted 21 May 2012 - 12:28 AM
Posted 21 May 2012 - 01:15 AM
Posted 21 May 2012 - 02:57 AM
Posted 21 May 2012 - 05:59 AM
I see some issues stated about converting matrix to Euler, I want to guarantee that I will receive VALID values and EXACTLY the same rotation values from a D3DXMATRIX every time I convert D3DXMATRIX to Euler without any problem, is that possible?