diff -Nauwr Irrlicht/include/quaternion.h Irrlicht/include/quaternion.h --- Irrlicht/include/quaternion.h 2005-08-20 22:17:44.000000000 +0200 +++ Irrlicht/include/quaternion.h 2005-09-16 14:38:34.000000000 +0200 @@ -150,13 +150,13 @@ if( diag > 0.0f ) { - scale = sqrtf(diag) * 2.0f; // get scale from diagonal + scale = 0.5f / sqrtf(diag); // get scale from diagonal // TODO: speed this up - X = ( m(1,2) - m(2,1)) / scale; - Y = ( m(2,0) - m(0,2)) / scale; - Z = ( m(0,1) - m(1,0)) / scale; - W = 0.25f * scale; + X = ( m(2,1) - m(1,2) ) * scale; + Y = ( m(0,2) - m(2,0) ) * scale; + Z = ( m(1,0) - m(0,1) ) * scale; + W = 0.25f / scale; } else {