|
|
|
@ -89,6 +89,7 @@ struct DualQuaternionTest: Corrade::TestSuite::Tester { |
|
|
|
void rotation(); |
|
|
|
void rotation(); |
|
|
|
void rotationNotNormalized(); |
|
|
|
void rotationNotNormalized(); |
|
|
|
void translation(); |
|
|
|
void translation(); |
|
|
|
|
|
|
|
void rotationTranslation(); |
|
|
|
void combinedTransformParts(); |
|
|
|
void combinedTransformParts(); |
|
|
|
void matrix(); |
|
|
|
void matrix(); |
|
|
|
void matrixNotOrthogonal(); |
|
|
|
void matrixNotOrthogonal(); |
|
|
|
@ -154,6 +155,7 @@ DualQuaternionTest::DualQuaternionTest() { |
|
|
|
&DualQuaternionTest::rotation, |
|
|
|
&DualQuaternionTest::rotation, |
|
|
|
&DualQuaternionTest::rotationNotNormalized, |
|
|
|
&DualQuaternionTest::rotationNotNormalized, |
|
|
|
&DualQuaternionTest::translation, |
|
|
|
&DualQuaternionTest::translation, |
|
|
|
|
|
|
|
&DualQuaternionTest::rotationTranslation, |
|
|
|
&DualQuaternionTest::combinedTransformParts, |
|
|
|
&DualQuaternionTest::combinedTransformParts, |
|
|
|
&DualQuaternionTest::matrix, |
|
|
|
&DualQuaternionTest::matrix, |
|
|
|
&DualQuaternionTest::matrixNotOrthogonal, |
|
|
|
&DualQuaternionTest::matrixNotOrthogonal, |
|
|
|
@ -469,6 +471,17 @@ void DualQuaternionTest::translation() { |
|
|
|
CORRADE_COMPARE(q.translation(), vec); |
|
|
|
CORRADE_COMPARE(q.translation(), vec); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DualQuaternionTest::rotationTranslation() { |
|
|
|
|
|
|
|
Vector3 axis(1.0f/Constants<Float>::sqrt3()); |
|
|
|
|
|
|
|
Quaternion r = Quaternion::rotation(120.0_degf, axis); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vector3 vec(1.0f, -3.5f, 0.5f); |
|
|
|
|
|
|
|
DualQuaternion t = DualQuaternion::translation(vec); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DualQuaternion rt = t*DualQuaternion{r}; |
|
|
|
|
|
|
|
CORRADE_COMPARE(DualQuaternion::from(r, vec), rt); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void DualQuaternionTest::combinedTransformParts() { |
|
|
|
void DualQuaternionTest::combinedTransformParts() { |
|
|
|
Vector3 translation = Vector3(-1.0f, 2.0f, 3.0f); |
|
|
|
Vector3 translation = Vector3(-1.0f, 2.0f, 3.0f); |
|
|
|
DualQuaternion a = DualQuaternion::translation(translation)*DualQuaternion::rotation(23.0_degf, Vector3::xAxis()); |
|
|
|
DualQuaternion a = DualQuaternion::translation(translation)*DualQuaternion::rotation(23.0_degf, Vector3::xAxis()); |
|
|
|
|