Browse Source

Math: added tests for composed dual quaternion parts.

To be sure everything is implemented properly.
pull/7/head
Vladimír Vondruš 13 years ago
parent
commit
07c0c4d845
  1. 16
      src/Math/Test/DualQuaternionTest.cpp

16
src/Math/Test/DualQuaternionTest.cpp

@ -39,6 +39,7 @@ class DualQuaternionTest: public Corrade::TestSuite::Tester {
void rotation();
void translation();
void combinedTransformParts();
void transformPointNormalized();
void debug();
@ -65,6 +66,7 @@ DualQuaternionTest::DualQuaternionTest() {
&DualQuaternionTest::rotation,
&DualQuaternionTest::translation,
&DualQuaternionTest::combinedTransformParts,
&DualQuaternionTest::transformPointNormalized,
&DualQuaternionTest::debug);
@ -143,6 +145,20 @@ void DualQuaternionTest::translation() {
CORRADE_COMPARE(q.translation(), vec);
}
void DualQuaternionTest::combinedTransformParts() {
Vector3 translation = Vector3(-1.0f, 2.0f, 3.0f);
DualQuaternion a = DualQuaternion::translation(translation)*DualQuaternion::rotation(deg(23.0f), Vector3::xAxis());
DualQuaternion b = DualQuaternion::rotation(deg(23.0f), Vector3::xAxis())*DualQuaternion::translation(translation);
CORRADE_COMPARE(a.rotationAxis(), Vector3::xAxis());
CORRADE_COMPARE(b.rotationAxis(), Vector3::xAxis());
CORRADE_COMPARE(a.rotationAngle(), deg(23.0f));
CORRADE_COMPARE(b.rotationAngle(), deg(23.0f));
CORRADE_COMPARE(a.translation(), translation);
CORRADE_COMPARE(b.translation(), Quaternion::rotation(deg(23.0f), Vector3::xAxis()).rotateVectorNormalized(translation));
}
void DualQuaternionTest::transformPointNormalized() {
DualQuaternion a = DualQuaternion::translation({-1.0f, 2.0f, 3.0f})*DualQuaternion::rotation(deg(23.0f), Vector3::xAxis());
DualQuaternion b = DualQuaternion::rotation(deg(23.0f), Vector3::xAxis())*DualQuaternion::translation({-1.0f, 2.0f, 3.0f});

Loading…
Cancel
Save