Quaternion.toEuler() bug?
Posted: Sun May 01, 2011 7:01 am
my english is poor....
i use quaternion to rotation...
the following is an example.
vector3df A(0.0, 0.0, 0.0);
Quaternion cQuat(A*core::DEGTORAD);
core::vector3df B;
cQuat.toEuler(B);
B*=core::RADTODEG;
if(B.x < 0.0f)
B.x += 360.0f;
if(B.y < 0.0f)
B.y += 360.0f;
if(B.z < 0.0f)
B.z += 360.0f;
this is Result...
A: 0.00, -0.00, 0.00
B: 0.00, -0.00, 0.00
-------------------------------------------------------- good
A: 90.00, -0.00, 0.00
B: 90.00, -0.00, 0.00
-------------------------------------------------------- good
A: 179.30, 359.18, 0.58
B: 179.30, 359.18, 0.58
-------------------------------------------------------- good
A: 355.82, 345.96, 273.26
B: 355.82, 345.96, 273.26
-------------------------------------------------------- good
A: 4.85, 359.30, 94.33
B: 4.85, 359.30, 94.33
-------------------------------------------------------- good
A: 0.00, 90.00, 270.00
B: 0.00, 90.00, 0.00
-------------------------------------------------------- bad
A: 3.23, 359.65, 10.21
B: 3.23, 359.65, 10.21
-------------------------------------------------------- good
A: 3.23, 359.65, 10.17
B: 3.23, 359.65, 10.17
-------------------------------------------------------- good
A: 0.00, 0.00, 24.04
B: 0.00, 0.00, 24.04
-------------------------------------------------------- good
A: 0.58, 4.36, 334.36
B: 0.58, 4.36, 334.36
-------------------------------------------------------- good
A: 0.00, 0.00, 103.99
B: 0.00, 0.00, 103.99
-------------------------------------------------------- good
A: 0.00, 90.00, 159.51
B: 176.21, 89.98, 335.72
-------------------------------------------------------- bad
A: 0.00, 90.00, 249.48
B: 235.26, 89.98, 124.74
-------------------------------------------------------- bad
A: 0.00, 75.55, 155.89
B: 0.00, 75.55, 155.89
-------------------------------------------------------- good
A: 11.64, 311.52, 345.35
B: 11.64, 311.52, 345.35
-------------------------------------------------------- good
A: 0.00, 0.00, 276.00
B: 0.00, 0.00, 276.00
-------------------------------------------------------- good
A: 90.95, 360.00, 360.00
B: 90.95, 0.00, 0.00
-------------------------------------------------------- good
A: 76.68, 1.11, 18.65
B: 76.68, 1.11, 18.65
-------------------------------------------------------- good
A: 360.00, 0.00, 295.00
B: 0.00, 0.00, 295.00
-------------------------------------------------------- good
A: 360.00, 0.00, 0.00
B: 0.00, 0.00, 0.00
-------------------------------------------------------- good
A: 351.10, 353.37, 9.27
B: 351.10, 353.37, 9.27
-------------------------------------------------------- good
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 0.04, 359.99, 9.50
B: 0.04, 359.99, 9.50
-------------------------------------------------------- good
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 12.10, 4.72, 11.24
B: 12.10, 4.72, 11.24
-------------------------------------------------------- good
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 0.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 0.34, 89.58, 360.00
B: 0.34, 89.58, 0.00
-------------------------------------------------------- good
A: 0.00, 284.45, 155.89
B: 0.00, 284.45, 155.89
-------------------------------------------------------- good
A: 14.63, 48.72, 31.79
B: 14.63, 48.72, 31.79
-------------------------------------------------------- good
A: 0.00, 360.00, 286.29
B: 0.00, 0.00, 286.29
-------------------------------------------------------- good
A: 269.05, 0.00, 0.00
B: 269.05, 0.00, 0.00
-------------------------------------------------------- good
A: 283.32, 358.89, 18.65
B: 283.32, 358.89, 18.65
--------------------------------------------------------
A: 360.00, 360.00, 295.00
B: 0.00, 0.00, 295.00
--------------------------------------------------------
A: 0.00, 360.00, 0.00
B: 0.00, 0.00, 0.00
--------------------------------------------------------
A: 8.90, 6.63, 9.27
B: 8.90, 6.63, 9.27
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 359.96, 0.01, 9.50
B: 359.96, 0.01, 9.50
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 347.90, 355.28, 11.24
B: 347.90, 355.28, 11.24
--------------------------------------------------------
A: 0.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 0.01, 0.42, 90.38
B: 0.01, 0.42, 90.38
--------------------------------------------------------
A: 0.01, 0.42, 90.38
B: 0.01, 0.42, 90.38
--------------------------------------------------------
A: 115.52, 89.04, 205.51
B: 115.52, 89.04, 205.51
--------------------------------------------------------
A: 180.41, 359.94, 179.69
B: 180.41, 359.94, 179.69
--------------------------------------------------------
A: 0.00, 90.00, 269.91
B: 161.61, 90.00, 71.52
-------------------------------------------------------- bad
A: 0.00, 90.00, 269.91
B: 161.61, 90.00, 71.52
-------------------------------------------------------- bad
A: 180.92, 10.79, 144.53
B: 180.92, 10.79, 144.53
--------------------------------------------------------
A: 0.00, 0.00, 261.73
B: 0.00, 0.00, 261.73
--------------------------------------------------------
A: 358.24, 358.07, 342.82
B: 358.24, 358.07, 342.82
--------------------------------------------------------
A: 0.00, 0.00, 71.19
B: 0.00, 0.00, 71.19
--------------------------------------------------------
A: 90.01, 270.49, 360.00
B: 90.01, 270.49, 360.00
--------------------------------------------------------
A: 180.09, 270.06, 0.00
B: 180.09, 270.06, 0.00
--------------------------------------------------------
A: 173.58, 348.13, 132.25
B: 173.58, 348.13, 132.25
--------------------------------------------------------
A: 360.00, 0.00, 318.30
B: 0.00, 0.00, 318.30
--------------------------------------------------------
A: 359.78, 357.69, 7.52
B: 359.78, 357.69, 7.52
--------------------------------------------------------
A: 0.00, 360.00, 71.00
B: 0.00, 0.00, 71.00
--------------------------------------------------------
A: 269.99, 270.49, 360.00
B: 269.99, 270.49, 0.00
--------------------------------------------------------
A: 181.95, 270.03, 0.00
B: 181.95, 270.03, 360.00
--------------------------------------------------------
Why A and B do not always match...?
please answer ...
i use quaternion to rotation...
the following is an example.
vector3df A(0.0, 0.0, 0.0);
Quaternion cQuat(A*core::DEGTORAD);
core::vector3df B;
cQuat.toEuler(B);
B*=core::RADTODEG;
if(B.x < 0.0f)
B.x += 360.0f;
if(B.y < 0.0f)
B.y += 360.0f;
if(B.z < 0.0f)
B.z += 360.0f;
this is Result...
A: 0.00, -0.00, 0.00
B: 0.00, -0.00, 0.00
-------------------------------------------------------- good
A: 90.00, -0.00, 0.00
B: 90.00, -0.00, 0.00
-------------------------------------------------------- good
A: 179.30, 359.18, 0.58
B: 179.30, 359.18, 0.58
-------------------------------------------------------- good
A: 355.82, 345.96, 273.26
B: 355.82, 345.96, 273.26
-------------------------------------------------------- good
A: 4.85, 359.30, 94.33
B: 4.85, 359.30, 94.33
-------------------------------------------------------- good
A: 0.00, 90.00, 270.00
B: 0.00, 90.00, 0.00
-------------------------------------------------------- bad
A: 3.23, 359.65, 10.21
B: 3.23, 359.65, 10.21
-------------------------------------------------------- good
A: 3.23, 359.65, 10.17
B: 3.23, 359.65, 10.17
-------------------------------------------------------- good
A: 0.00, 0.00, 24.04
B: 0.00, 0.00, 24.04
-------------------------------------------------------- good
A: 0.58, 4.36, 334.36
B: 0.58, 4.36, 334.36
-------------------------------------------------------- good
A: 0.00, 0.00, 103.99
B: 0.00, 0.00, 103.99
-------------------------------------------------------- good
A: 0.00, 90.00, 159.51
B: 176.21, 89.98, 335.72
-------------------------------------------------------- bad
A: 0.00, 90.00, 249.48
B: 235.26, 89.98, 124.74
-------------------------------------------------------- bad
A: 0.00, 75.55, 155.89
B: 0.00, 75.55, 155.89
-------------------------------------------------------- good
A: 11.64, 311.52, 345.35
B: 11.64, 311.52, 345.35
-------------------------------------------------------- good
A: 0.00, 0.00, 276.00
B: 0.00, 0.00, 276.00
-------------------------------------------------------- good
A: 90.95, 360.00, 360.00
B: 90.95, 0.00, 0.00
-------------------------------------------------------- good
A: 76.68, 1.11, 18.65
B: 76.68, 1.11, 18.65
-------------------------------------------------------- good
A: 360.00, 0.00, 295.00
B: 0.00, 0.00, 295.00
-------------------------------------------------------- good
A: 360.00, 0.00, 0.00
B: 0.00, 0.00, 0.00
-------------------------------------------------------- good
A: 351.10, 353.37, 9.27
B: 351.10, 353.37, 9.27
-------------------------------------------------------- good
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 0.04, 359.99, 9.50
B: 0.04, 359.99, 9.50
-------------------------------------------------------- good
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 12.10, 4.72, 11.24
B: 12.10, 4.72, 11.24
-------------------------------------------------------- good
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 0.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
-------------------------------------------------------- good
A: 0.34, 89.58, 360.00
B: 0.34, 89.58, 0.00
-------------------------------------------------------- good
A: 0.00, 284.45, 155.89
B: 0.00, 284.45, 155.89
-------------------------------------------------------- good
A: 14.63, 48.72, 31.79
B: 14.63, 48.72, 31.79
-------------------------------------------------------- good
A: 0.00, 360.00, 286.29
B: 0.00, 0.00, 286.29
-------------------------------------------------------- good
A: 269.05, 0.00, 0.00
B: 269.05, 0.00, 0.00
-------------------------------------------------------- good
A: 283.32, 358.89, 18.65
B: 283.32, 358.89, 18.65
--------------------------------------------------------
A: 360.00, 360.00, 295.00
B: 0.00, 0.00, 295.00
--------------------------------------------------------
A: 0.00, 360.00, 0.00
B: 0.00, 0.00, 0.00
--------------------------------------------------------
A: 8.90, 6.63, 9.27
B: 8.90, 6.63, 9.27
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 360.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 359.96, 0.01, 9.50
B: 359.96, 0.01, 9.50
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 347.90, 355.28, 11.24
B: 347.90, 355.28, 11.24
--------------------------------------------------------
A: 0.00, 360.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 360.00, 0.00, 80.00
B: 0.00, 0.00, 80.00
--------------------------------------------------------
A: 0.01, 0.42, 90.38
B: 0.01, 0.42, 90.38
--------------------------------------------------------
A: 0.01, 0.42, 90.38
B: 0.01, 0.42, 90.38
--------------------------------------------------------
A: 115.52, 89.04, 205.51
B: 115.52, 89.04, 205.51
--------------------------------------------------------
A: 180.41, 359.94, 179.69
B: 180.41, 359.94, 179.69
--------------------------------------------------------
A: 0.00, 90.00, 269.91
B: 161.61, 90.00, 71.52
-------------------------------------------------------- bad
A: 0.00, 90.00, 269.91
B: 161.61, 90.00, 71.52
-------------------------------------------------------- bad
A: 180.92, 10.79, 144.53
B: 180.92, 10.79, 144.53
--------------------------------------------------------
A: 0.00, 0.00, 261.73
B: 0.00, 0.00, 261.73
--------------------------------------------------------
A: 358.24, 358.07, 342.82
B: 358.24, 358.07, 342.82
--------------------------------------------------------
A: 0.00, 0.00, 71.19
B: 0.00, 0.00, 71.19
--------------------------------------------------------
A: 90.01, 270.49, 360.00
B: 90.01, 270.49, 360.00
--------------------------------------------------------
A: 180.09, 270.06, 0.00
B: 180.09, 270.06, 0.00
--------------------------------------------------------
A: 173.58, 348.13, 132.25
B: 173.58, 348.13, 132.25
--------------------------------------------------------
A: 360.00, 0.00, 318.30
B: 0.00, 0.00, 318.30
--------------------------------------------------------
A: 359.78, 357.69, 7.52
B: 359.78, 357.69, 7.52
--------------------------------------------------------
A: 0.00, 360.00, 71.00
B: 0.00, 0.00, 71.00
--------------------------------------------------------
A: 269.99, 270.49, 360.00
B: 269.99, 270.49, 0.00
--------------------------------------------------------
A: 181.95, 270.03, 0.00
B: 181.95, 270.03, 360.00
--------------------------------------------------------
Why A and B do not always match...?
please answer ...