Commit d905e243 authored by hybrid's avatar hybrid

Make sure that matrix multiplication and rotation concatenation are the same.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2841 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 9223972c
......@@ -54,6 +54,9 @@ bool rotations(void)
{
bool result = true;
matrix4 rot1,rot2,rot3,rot4,rot5;
core::vector3df vec1(1,2,3),vec12(1,2,3);
core::vector3df vec2(-5,0,0),vec22(-5,0,0);
core::vector3df vec3(20,0,-20), vec32(20,0,-20);
// Make sure the matrix multiplication and rotation application give same results
rot1.setRotationDegrees(core::vector3df(90,0,0));
rot2.setRotationDegrees(core::vector3df(0,90,0));
......@@ -61,12 +64,36 @@ bool rotations(void)
rot4.setRotationDegrees(core::vector3df(90,90,90));
rot5 = rot3*rot2*rot1;
result &= (rot4.equals(rot5, ROUNDING_ERROR_f32));
assert(result);
rot4.transformVect(vec1);rot5.transformVect(vec12);
rot4.transformVect(vec2);rot5.transformVect(vec22);
rot4.transformVect(vec3);rot5.transformVect(vec32);
result &= (vec1.equals(vec12));
result &= (vec2.equals(vec22));
result &= (vec3.equals(vec32));
assert(result);
vec1.set(1,2,3);vec12.set(1,2,3);
vec2.set(-5,0,0);vec22.set(-5,0,0);
vec3.set(20,0,-20);vec32.set(20,0,-20);
rot1.setRotationDegrees(core::vector3df(45,0,0));
rot2.setRotationDegrees(core::vector3df(0,45,0));
rot3.setRotationDegrees(core::vector3df(0,0,45));
rot4.setRotationDegrees(core::vector3df(45,45,45));
rot5 = rot3*rot2*rot1;
result &= (rot4.equals(rot5, ROUNDING_ERROR_f32));
assert(result);
rot4.transformVect(vec1);rot5.transformVect(vec12);
rot4.transformVect(vec2);rot5.transformVect(vec22);
rot4.transformVect(vec3);rot5.transformVect(vec32);
result &= (vec1.equals(vec12));
result &= (vec2.equals(vec22));
result &= (vec3.equals(vec32));
assert(result);
vec1.set(1,2,3);vec12.set(1,2,3);
vec2.set(-5,0,0);vec22.set(-5,0,0);
vec3.set(20,0,-20);vec32.set(20,0,-20);
rot1.setRotationDegrees(core::vector3df(-60,0,0));
rot2.setRotationDegrees(core::vector3df(0,-60,0));
rot3.setRotationDegrees(core::vector3df(0,0,-60));
......@@ -74,12 +101,31 @@ bool rotations(void)
rot5 = rot3*rot2*rot1;
result &= (rot4.equals(rot5, ROUNDING_ERROR_f32));
assert(result);
rot4.transformVect(vec1);rot5.transformVect(vec12);
rot4.transformVect(vec2);rot5.transformVect(vec22);
rot4.transformVect(vec3);rot5.transformVect(vec32);
result &= (vec1.equals(vec12));
result &= (vec2.equals(vec22));
result &= (vec3.equals(vec32));
assert(result);
vec1.set(1,2,3);vec12.set(1,2,3);
vec2.set(-5,0,0);vec22.set(-5,0,0);
vec3.set(20,0,-20);vec32.set(20,0,-20);
rot1.setRotationDegrees(core::vector3df(113,0,0));
rot2.setRotationDegrees(core::vector3df(0,-27,0));
rot3.setRotationDegrees(core::vector3df(0,0,193));
rot4.setRotationDegrees(core::vector3df(113,-27,193));
rot5 = rot3*rot2*rot1;
result &= (rot4.equals(rot5, ROUNDING_ERROR_f32));
assert(result);
rot4.transformVect(vec1);rot5.transformVect(vec12);
rot4.transformVect(vec2);rot5.transformVect(vec22);
rot4.transformVect(vec3);rot5.transformVect(vec32);
result &= (vec1.equals(vec12));
result &= (vec2.equals(vec22));
result &= (vec3.equals(vec32));
assert(result);
return result;
}
......
Test suite pass at GMT Tue Nov 10 23:48:47 2009
Test suite pass at GMT Wed Nov 11 00:02:11 2009
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment