|
|
|
@ -56,7 +56,7 @@ class Matrix4Test: public Corrade::TestSuite::Tester { |
|
|
|
void rotationScalingPart(); |
|
|
|
void rotationScalingPart(); |
|
|
|
void rotationPart(); |
|
|
|
void rotationPart(); |
|
|
|
void vectorParts(); |
|
|
|
void vectorParts(); |
|
|
|
void invertedEuclidean(); |
|
|
|
void invertedRigid(); |
|
|
|
void transform(); |
|
|
|
void transform(); |
|
|
|
|
|
|
|
|
|
|
|
void debug(); |
|
|
|
void debug(); |
|
|
|
@ -93,7 +93,7 @@ Matrix4Test::Matrix4Test() { |
|
|
|
&Matrix4Test::rotationScalingPart, |
|
|
|
&Matrix4Test::rotationScalingPart, |
|
|
|
&Matrix4Test::rotationPart, |
|
|
|
&Matrix4Test::rotationPart, |
|
|
|
&Matrix4Test::vectorParts, |
|
|
|
&Matrix4Test::vectorParts, |
|
|
|
&Matrix4Test::invertedEuclidean, |
|
|
|
&Matrix4Test::invertedRigid, |
|
|
|
&Matrix4Test::transform, |
|
|
|
&Matrix4Test::transform, |
|
|
|
|
|
|
|
|
|
|
|
&Matrix4Test::debug, |
|
|
|
&Matrix4Test::debug, |
|
|
|
@ -355,21 +355,7 @@ void Matrix4Test::vectorParts() { |
|
|
|
CORRADE_COMPARE(translation, Vector3(-5.0f, 12.0f, 0.5f)); |
|
|
|
CORRADE_COMPARE(translation, Vector3(-5.0f, 12.0f, 0.5f)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Matrix4Test::invertedEuclidean() { |
|
|
|
void Matrix4Test::invertedRigid() { |
|
|
|
std::ostringstream o; |
|
|
|
|
|
|
|
Error::setOutput(&o); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Matrix4 m({3.0f, 5.0f, 8.0f, 4.0f}, |
|
|
|
|
|
|
|
{4.0f, 4.0f, 7.0f, 3.0f}, |
|
|
|
|
|
|
|
{7.0f, -1.0f, 8.0f, 0.0f}, |
|
|
|
|
|
|
|
{9.0f, 4.0f, 5.0f, 9.0f}); |
|
|
|
|
|
|
|
CORRADE_COMPARE(m.invertedEuclidean(), Matrix4()); |
|
|
|
|
|
|
|
CORRADE_COMPARE(o.str(), "Math::Matrix4::invertedEuclidean(): unexpected values on last row\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
o.str({}); |
|
|
|
|
|
|
|
CORRADE_COMPARE(Matrix4::scaling(Vector3(2.0f)).invertedEuclidean(), Matrix4()); |
|
|
|
|
|
|
|
CORRADE_COMPARE(o.str(), "Math::Matrix4::invertedEuclidean(): the matrix doesn't represent Euclidean transformation\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Matrix4 actual = Matrix4::rotation(Deg(-74.0f), Vector3(-1.0f, 0.5f, 2.0f).normalized())* |
|
|
|
Matrix4 actual = Matrix4::rotation(Deg(-74.0f), Vector3(-1.0f, 0.5f, 2.0f).normalized())* |
|
|
|
Matrix4::reflection(Vector3(0.5f, -2.0f, 2.0f).normalized())* |
|
|
|
Matrix4::reflection(Vector3(0.5f, -2.0f, 2.0f).normalized())* |
|
|
|
Matrix4::translation({1.0f, 2.0f, -3.0f}); |
|
|
|
Matrix4::translation({1.0f, 2.0f, -3.0f}); |
|
|
|
@ -377,8 +363,13 @@ void Matrix4Test::invertedEuclidean() { |
|
|
|
Matrix4::reflection(Vector3(0.5f, -2.0f, 2.0f).normalized())* |
|
|
|
Matrix4::reflection(Vector3(0.5f, -2.0f, 2.0f).normalized())* |
|
|
|
Matrix4::rotation(Deg(74.0f), Vector3(-1.0f, 0.5f, 2.0f).normalized()); |
|
|
|
Matrix4::rotation(Deg(74.0f), Vector3(-1.0f, 0.5f, 2.0f).normalized()); |
|
|
|
|
|
|
|
|
|
|
|
CORRADE_COMPARE(actual.invertedEuclidean(), expected); |
|
|
|
std::ostringstream o; |
|
|
|
CORRADE_COMPARE(actual.invertedEuclidean(), actual.inverted()); |
|
|
|
Error::setOutput(&o); |
|
|
|
|
|
|
|
(2*actual).invertedRigid(); |
|
|
|
|
|
|
|
CORRADE_COMPARE(o.str(), "Math::Matrix4::invertedRigid(): the matrix doesn't represent rigid transformation\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CORRADE_COMPARE(actual.invertedRigid(), expected); |
|
|
|
|
|
|
|
CORRADE_COMPARE(actual.invertedRigid(), actual.inverted()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Matrix4Test::transform() { |
|
|
|
void Matrix4Test::transform() { |
|
|
|
|