Browse Source

Math: use angle literals in all test code.

It was originally done using the Deg() / Rad() constructors in order to
be compatible with GCC 4.6, but fortunately those days are long gone.

Co-authored-by: Squareys <squareys@googlemail.com>
pull/483/head
Vladimír Vondruš 6 years ago
parent
commit
e6322dcfd1
  1. 10
      src/Magnum/Math/Test/AngleTest.cpp
  2. 4
      src/Magnum/Math/Test/ColorTest.cpp
  3. 22
      src/Magnum/Math/Test/ComplexTest.cpp
  4. 28
      src/Magnum/Math/Test/DualComplexTest.cpp
  5. 38
      src/Magnum/Math/Test/DualQuaternionTest.cpp
  6. 28
      src/Magnum/Math/Test/FunctionsTest.cpp
  7. 8
      src/Magnum/Math/Test/Matrix3Test.cpp
  8. 14
      src/Magnum/Math/Test/Matrix4Test.cpp
  9. 36
      src/Magnum/Math/Test/QuaternionTest.cpp

10
src/Magnum/Math/Test/AngleTest.cpp

@ -259,31 +259,31 @@ void AngleTest::conversion() {
constexpr Deg a = Rad(1.57079633f);
CORRADE_COMPARE(Float(a), 90.0f);
constexpr Rad b = Deg(90.0f);
constexpr Rad b = 90.0_degf;
CORRADE_COMPARE(Float(b), 1.57079633f);
}
void AngleTest::debugDeg() {
std::ostringstream o;
Debug(&o) << Deg(90.0f);
Debug(&o) << 90.0_degf;
CORRADE_COMPARE(o.str(), "Deg(90)\n");
/* Verify that this compiles */
o.str({});
Debug(&o) << Deg(56.0f) - Deg(34.0f);
Debug(&o) << 56.0_degf - 34.0_degf;
CORRADE_COMPARE(o.str(), "Deg(22)\n");
}
void AngleTest::debugRad() {
std::ostringstream o;
Debug(&o) << Rad(1.5708f);
Debug(&o) << 1.5708_radf;
CORRADE_COMPARE(o.str(), "Rad(1.5708)\n");
/* Verify that this compiles */
o.str({});
Debug(&o) << Rad(1.5708f) - Rad(3.1416f);
Debug(&o) << 1.5708_radf - 3.1416_radf;
CORRADE_COMPARE(o.str(), "Rad(-1.5708)\n");
}

4
src/Magnum/Math/Test/ColorTest.cpp

@ -556,8 +556,8 @@ void ColorTest::constructHsvCopy() {
}
void ColorTest::compareHsv() {
CORRADE_VERIFY((ColorHsv{135.0_degf, 0.5f, 0.9f} == ColorHsv{135.0_degf + Deg(TypeTraits<Float>::epsilon()*100.0f), 0.5f, 0.9f}));
CORRADE_VERIFY((ColorHsv{135.0_degf, 0.5f, 0.9f} != ColorHsv{135.0_degf + Deg(TypeTraits<Float>::epsilon()*400.0f), 0.5f, 0.9f}));
CORRADE_VERIFY((ColorHsv{135.0_degf, 0.5f, 0.9f} == ColorHsv{135.0_degf + TypeTraits<Float>::epsilon()*100.0_degf, 0.5f, 0.9f}));
CORRADE_VERIFY((ColorHsv{135.0_degf, 0.5f, 0.9f} != ColorHsv{135.0_degf + TypeTraits<Float>::epsilon()*400.0_degf, 0.5f, 0.9f}));
CORRADE_VERIFY((ColorHsv{135.0_degf, 0.5f, 0.9f} == ColorHsv{135.0_degf, 0.5f, 0.9f + TypeTraits<Float>::epsilon()*0.5f}));
CORRADE_VERIFY((ColorHsv{135.0_degf, 0.5f, 0.9f} != ColorHsv{135.0_degf, 0.5f, 0.9f + TypeTraits<Float>::epsilon()*2.0f}));

22
src/Magnum/Math/Test/ComplexTest.cpp

@ -302,7 +302,7 @@ void ComplexTest::compare() {
void ComplexTest::isNormalized() {
CORRADE_VERIFY(!Complex(2.5f, -3.7f).isNormalized());
CORRADE_VERIFY(Complex::rotation(Deg(23.0f)).isNormalized());
CORRADE_VERIFY(Complex::rotation(23.0_degf).isNormalized());
}
template<class T> void ComplexTest::isNormalizedEpsilon() {
@ -474,23 +474,23 @@ void ComplexTest::angleNotNormalized() {
}
void ComplexTest::rotation() {
Complex a = Complex::rotation(Deg(120.0f));
Complex a = Complex::rotation(120.0_degf);
CORRADE_COMPARE(a.length(), 1.0f);
CORRADE_COMPARE(a, Complex(-0.5f, 0.8660254f));
CORRADE_COMPARE_AS(a.angle(), Deg(120.0f), Rad);
CORRADE_COMPARE_AS(a.angle(), 120.0_degf, Rad);
/* Verify negative angle */
Complex b = Complex::rotation(Deg(-240.0f));
Complex b = Complex::rotation(-240.0_degf);
CORRADE_COMPARE(b, Complex(-0.5f, 0.8660254f));
CORRADE_COMPARE_AS(b.angle(), Deg(120.0f), Rad);
CORRADE_COMPARE_AS(b.angle(), 120.0_degf, Rad);
/* Default-constructed complex number has zero angle */
CORRADE_COMPARE_AS(Complex().angle(), Deg(0.0f), Rad);
CORRADE_COMPARE_AS(Complex().angle(), 0.0_degf, Rad);
}
void ComplexTest::matrix() {
Complex a = Complex::rotation(Deg(37.0f));
Matrix2x2 m = Matrix3::rotation(Deg(37.0f)).rotationScaling();
Complex a = Complex::rotation(37.0_degf);
Matrix2x2 m = Matrix3::rotation(37.0_degf).rotationScaling();
CORRADE_COMPARE(a.toMatrix(), m);
CORRADE_COMPARE(Complex::fromMatrix(m), a);
@ -504,7 +504,7 @@ void ComplexTest::matrixNotOrthogonal() {
std::ostringstream out;
Error redirectError{&out};
Complex::fromMatrix(Matrix3::rotation(Deg(37.0f)).rotationScaling()*2);
Complex::fromMatrix(Matrix3::rotation(37.0_degf).rotationScaling()*2);
CORRADE_COMPARE(out.str(),
"Math::Complex::fromMatrix(): the matrix is not orthogonal:\n"
"Matrix(1.59727, -1.20363,\n"
@ -571,8 +571,8 @@ void ComplexTest::slerpNotNormalized() {
}
void ComplexTest::transformVector() {
Complex a = Complex::rotation(Deg(23.0f));
Matrix3 m = Matrix3::rotation(Deg(23.0f));
Complex a = Complex::rotation(23.0_degf);
Matrix3 m = Matrix3::rotation(23.0_degf);
Vector2 v(-3.6f, 0.7f);
Vector2 rotated = a.transformVector(v);

28
src/Magnum/Math/Test/DualComplexTest.cpp

@ -283,7 +283,7 @@ void DualComplexTest::data() {
void DualComplexTest::isNormalized() {
CORRADE_VERIFY(!DualComplex({2.0f, 1.0f}, {}).isNormalized());
CORRADE_VERIFY((DualComplex::rotation(Deg(23.0f))*DualComplex::translation({6.0f, 3.0f})).isNormalized());
CORRADE_VERIFY((DualComplex::rotation(23.0_degf)*DualComplex::translation({6.0f, 3.0f})).isNormalized());
}
template<class T> void DualComplexTest::isNormalizedEpsilonRotation() {
@ -392,10 +392,10 @@ void DualComplexTest::invertedNormalizedNotNormalized() {
}
void DualComplexTest::rotation() {
DualComplex a = DualComplex::rotation(Deg(120.0f));
DualComplex a = DualComplex::rotation(120.0_degf);
CORRADE_COMPARE(a.length(), 1.0f);
CORRADE_COMPARE(a, DualComplex({-0.5f, 0.8660254f}, {0.0f, 0.0f}));
CORRADE_COMPARE_AS(a.rotation().angle(), Deg(120.0f), Rad);
CORRADE_COMPARE_AS(a.rotation().angle(), 120.0_degf, Rad);
/* Constexpr access to rotation */
constexpr DualComplex b({-1.0f, 2.0f}, {});
@ -416,18 +416,18 @@ void DualComplexTest::translation() {
void DualComplexTest::combinedTransformParts() {
Vector2 translation = Vector2(-1.5f, 2.75f);
DualComplex a = DualComplex::translation(translation)*DualComplex::rotation(Deg(23.0f));
DualComplex b = DualComplex::rotation(Deg(23.0f))*DualComplex::translation(translation);
DualComplex a = DualComplex::translation(translation)*DualComplex::rotation(23.0_degf);
DualComplex b = DualComplex::rotation(23.0_degf)*DualComplex::translation(translation);
CORRADE_COMPARE_AS(a.rotation().angle(), Deg(23.0f), Rad);
CORRADE_COMPARE_AS(b.rotation().angle(), Deg(23.0f), Rad);
CORRADE_COMPARE_AS(a.rotation().angle(), 23.0_degf, Rad);
CORRADE_COMPARE_AS(b.rotation().angle(), 23.0_degf, Rad);
CORRADE_COMPARE(a.translation(), translation);
CORRADE_COMPARE(b.translation(), Complex::rotation(Deg(23.0f)).transformVector(translation));
CORRADE_COMPARE(b.translation(), Complex::rotation(23.0_degf).transformVector(translation));
}
void DualComplexTest::matrix() {
DualComplex a = DualComplex::rotation(Deg(23.0f))*DualComplex::translation({2.0f, 3.0f});
Matrix3 m = Matrix3::rotation(Deg(23.0f))*Matrix3::translation({2.0f, 3.0f});
DualComplex a = DualComplex::rotation(23.0_degf)*DualComplex::translation({2.0f, 3.0f});
Matrix3 m = Matrix3::rotation(23.0_degf)*Matrix3::translation({2.0f, 3.0f});
CORRADE_COMPARE(a.toMatrix(), m);
CORRADE_COMPARE(DualComplex::fromMatrix(m), a);
@ -461,10 +461,10 @@ void DualComplexTest::transformVector() {
}
void DualComplexTest::transformPoint() {
DualComplex a = DualComplex::translation({2.0f, 3.0f})*DualComplex::rotation(Deg(23.0f));
DualComplex b = DualComplex::rotation(Deg(23.0f))*DualComplex::translation({2.0f, 3.0f});
Matrix3 m = Matrix3::translation({2.0f, 3.0f})*Matrix3::rotation(Deg(23.0f));
Matrix3 n = Matrix3::rotation(Deg(23.0f))*Matrix3::translation({2.0f, 3.0f});
DualComplex a = DualComplex::translation({2.0f, 3.0f})*DualComplex::rotation(23.0_degf);
DualComplex b = DualComplex::rotation(23.0_degf)*DualComplex::translation({2.0f, 3.0f});
Matrix3 m = Matrix3::translation({2.0f, 3.0f})*Matrix3::rotation(23.0_degf);
Matrix3 n = Matrix3::rotation(23.0_degf)*Matrix3::translation({2.0f, 3.0f});
Vector2 v(-3.6f, 0.7f);
Vector2 transformedA = a.transformPoint(v);

38
src/Magnum/Math/Test/DualQuaternionTest.cpp

@ -320,7 +320,7 @@ void DualQuaternionTest::data() {
void DualQuaternionTest::isNormalized() {
CORRADE_VERIFY(!DualQuaternion({{1.0f, 2.0f, 3.0f}, 4.0f}, {}).isNormalized());
CORRADE_VERIFY((DualQuaternion::rotation(Deg(23.0f), Vector3::xAxis())*DualQuaternion::translation({0.9f, -1.0f, -0.5f})).isNormalized());
CORRADE_VERIFY((DualQuaternion::rotation(23.0_degf, Vector3::xAxis())*DualQuaternion::translation({0.9f, -1.0f, -0.5f})).isNormalized());
}
template<class T> void DualQuaternionTest::isNormalizedEpsilonRotation() {
@ -434,10 +434,10 @@ void DualQuaternionTest::invertedNormalizedNotNormalized() {
void DualQuaternionTest::rotation() {
Vector3 axis(1.0f/Constants<Float>::sqrt3());
DualQuaternion q = DualQuaternion::rotation(Deg(120.0f), axis);
DualQuaternion q = DualQuaternion::rotation(120.0_degf, axis);
CORRADE_COMPARE(q.length(), 1.0f);
CORRADE_COMPARE(q, DualQuaternion({Vector3(0.5f, 0.5f, 0.5f), 0.5f}, {{}, 0.0f}));
CORRADE_COMPARE_AS(q.rotation().angle(), Deg(120.0f), Deg);
CORRADE_COMPARE_AS(q.rotation().angle(), 120.0_degf, Deg);
CORRADE_COMPARE(q.rotation().axis(), axis);
/* Constexpr access to rotation */
@ -471,21 +471,21 @@ void DualQuaternionTest::translation() {
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);
DualQuaternion a = DualQuaternion::translation(translation)*DualQuaternion::rotation(23.0_degf, Vector3::xAxis());
DualQuaternion b = DualQuaternion::rotation(23.0_degf, Vector3::xAxis())*DualQuaternion::translation(translation);
CORRADE_COMPARE(a.rotation().axis(), Vector3::xAxis());
CORRADE_COMPARE(b.rotation().axis(), Vector3::xAxis());
CORRADE_COMPARE_AS(a.rotation().angle(), Deg(23.0f), Rad);
CORRADE_COMPARE_AS(b.rotation().angle(), Deg(23.0f), Rad);
CORRADE_COMPARE_AS(a.rotation().angle(), 23.0_degf, Rad);
CORRADE_COMPARE_AS(b.rotation().angle(), 23.0_degf, Rad);
CORRADE_COMPARE(a.translation(), translation);
CORRADE_COMPARE(b.translation(), Quaternion::rotation(Deg(23.0f), Vector3::xAxis()).transformVector(translation));
CORRADE_COMPARE(b.translation(), Quaternion::rotation(23.0_degf, Vector3::xAxis()).transformVector(translation));
}
void DualQuaternionTest::matrix() {
DualQuaternion q = DualQuaternion::rotation(Deg(23.0f), Vector3::xAxis())*DualQuaternion::translation({-1.0f, 2.0f, 3.0f});
Matrix4 m = Matrix4::rotationX(Deg(23.0f))*Matrix4::translation({-1.0f, 2.0f, 3.0f});
DualQuaternion q = DualQuaternion::rotation(23.0_degf, Vector3::xAxis())*DualQuaternion::translation({-1.0f, 2.0f, 3.0f});
Matrix4 m = Matrix4::rotationX(23.0_degf)*Matrix4::translation({-1.0f, 2.0f, 3.0f});
/* Verify that negated dual quaternion gives the same transformation */
CORRADE_COMPARE(q.toMatrix(), m);
@ -548,10 +548,10 @@ void DualQuaternionTest::transformVectorNormalizedNotNormalized() {
}
void DualQuaternionTest::transformPoint() {
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});
Matrix4 m = Matrix4::translation({-1.0f, 2.0f, 3.0f})*Matrix4::rotationX(Deg(23.0f));
Matrix4 n = Matrix4::rotationX(Deg(23.0f))*Matrix4::translation({-1.0f, 2.0f, 3.0f});
DualQuaternion a = DualQuaternion::translation({-1.0f, 2.0f, 3.0f})*DualQuaternion::rotation(23.0_degf, Vector3::xAxis());
DualQuaternion b = DualQuaternion::rotation(23.0_degf, Vector3::xAxis())*DualQuaternion::translation({-1.0f, 2.0f, 3.0f});
Matrix4 m = Matrix4::translation({-1.0f, 2.0f, 3.0f})*Matrix4::rotationX(23.0_degf);
Matrix4 n = Matrix4::rotationX(23.0_degf)*Matrix4::translation({-1.0f, 2.0f, 3.0f});
Vector3 v(0.0f, -3.6f, 0.7f);
Vector3 transformedA = (a*Dual(2)).transformPoint(v);
@ -564,10 +564,10 @@ void DualQuaternionTest::transformPoint() {
}
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});
Matrix4 m = Matrix4::translation({-1.0f, 2.0f, 3.0f})*Matrix4::rotationX(Deg(23.0f));
Matrix4 n = Matrix4::rotationX(Deg(23.0f))*Matrix4::translation({-1.0f, 2.0f, 3.0f});
DualQuaternion a = DualQuaternion::translation({-1.0f, 2.0f, 3.0f})*DualQuaternion::rotation(23.0_degf, Vector3::xAxis());
DualQuaternion b = DualQuaternion::rotation(23.0_degf, Vector3::xAxis())*DualQuaternion::translation({-1.0f, 2.0f, 3.0f});
Matrix4 m = Matrix4::translation({-1.0f, 2.0f, 3.0f})*Matrix4::rotationX(23.0_degf);
Matrix4 n = Matrix4::rotationX(23.0_degf)*Matrix4::translation({-1.0f, 2.0f, 3.0f});
Vector3 v(0.0f, -3.6f, 0.7f);
Vector3 transformedA = a.transformPointNormalized(v);
@ -587,7 +587,7 @@ void DualQuaternionTest::transformPointNormalizedNotNormalized() {
std::ostringstream out;
Error redirectError{&out};
DualQuaternion a = DualQuaternion::translation({-1.0f, 2.0f, 3.0f})*DualQuaternion::rotation(Deg(23.0f), Vector3::xAxis());
DualQuaternion a = DualQuaternion::translation({-1.0f, 2.0f, 3.0f})*DualQuaternion::rotation(23.0_degf, Vector3::xAxis());
(a*Dual(2)).transformPointNormalized({});
CORRADE_COMPARE(out.str(), "Math::DualQuaternion::transformPointNormalized(): DualQuaternion({{0.398736, 0, 0}, 1.95985}, {{-0.979925, 2.55795, 2.54104}, 0.199368}) is not normalized\n");
}

28
src/Magnum/Math/Test/FunctionsTest.cpp

@ -568,41 +568,41 @@ void FunctionsTest::refractNotNormalized() {
}
void FunctionsTest::trigonometric() {
CORRADE_COMPARE(Math::sin(Deg(30.0f)), 0.5f);
CORRADE_COMPARE(Math::sin(30.0_degf), 0.5f);
CORRADE_COMPARE(Math::sin(Rad(Constants::pi()/6)), 0.5f);
CORRADE_COMPARE_AS(Math::asin(0.5f), Deg(30.0f), Deg);
CORRADE_COMPARE_AS(Math::asin(0.5f), 30.0_degf, Deg);
CORRADE_COMPARE(Math::cos(Deg(60.0f)), 0.5f);
CORRADE_COMPARE(Math::cos(60.0_degf), 0.5f);
CORRADE_COMPARE(Math::cos(Rad(Constants::pi()/3)), 0.5f);
CORRADE_COMPARE_AS(Math::acos(0.5f), Deg(60.0f), Deg);
CORRADE_COMPARE_AS(Math::acos(0.5f), 60.0_degf, Deg);
CORRADE_COMPARE(Math::sincos(Deg(30.0f)).first, 0.5f);
CORRADE_COMPARE(Math::sincos(Deg(30.0f)).second, 0.8660254037844386f);
CORRADE_COMPARE(Math::sincos(30.0_degf).first, 0.5f);
CORRADE_COMPARE(Math::sincos(30.0_degf).second, 0.8660254037844386f);
CORRADE_COMPARE(Math::sincos(Rad(Constants::pi()/6)).first, 0.5f);
CORRADE_COMPARE(Math::sincos(Rad(Constants::pi()/6)).second, 0.8660254037844386f);
CORRADE_COMPARE(Math::tan(Deg(45.0f)), 1.0f);
CORRADE_COMPARE(Math::tan(45.0_degf), 1.0f);
CORRADE_COMPARE(Math::tan(Rad(Constants::pi()/4)), 1.0f);
CORRADE_COMPARE_AS(Math::atan(1.0f), Deg(45.0f), Deg);
CORRADE_COMPARE_AS(Math::atan(1.0f), 45.0_degf, Deg);
}
void FunctionsTest::trigonometricWithBase() {
/* Verify that the functions can be called with Unit<Deg, T> and Unit<Rad, T> */
CORRADE_VERIFY((std::is_same<decltype(2*Deg(15.0f)), Unit<Math::Deg, Float>>::value));
CORRADE_VERIFY((std::is_same<decltype(2*15.0_degf), Unit<Math::Deg, Float>>::value));
CORRADE_VERIFY((std::is_same<decltype(2*Rad(Constants::pi()/12)), Unit<Math::Rad, Float>>::value));
CORRADE_COMPARE(Math::sin(2*Deg(15.0f)), 0.5f);
CORRADE_COMPARE(Math::sin(2*15.0_degf), 0.5f);
CORRADE_COMPARE(Math::sin(2*Rad(Constants::pi()/12)), 0.5f);
CORRADE_COMPARE(Math::cos(2*Deg(30.0f)), 0.5f);
CORRADE_COMPARE(Math::cos(2*30.0_degf), 0.5f);
CORRADE_COMPARE(Math::cos(2*Rad(Constants::pi()/6)), 0.5f);
CORRADE_COMPARE(Math::sincos(2*Deg(15.0f)).first, 0.5f);
CORRADE_COMPARE(Math::sincos(2*Deg(15.0f)).second, 0.8660254037844386f);
CORRADE_COMPARE(Math::sincos(2*15.0_degf).first, 0.5f);
CORRADE_COMPARE(Math::sincos(2*15.0_degf).second, 0.8660254037844386f);
CORRADE_COMPARE(Math::sincos(2*Rad(Constants::pi()/12)).first, 0.5f);
CORRADE_COMPARE(Math::sincos(2*Rad(Constants::pi()/12)).second, 0.8660254037844386f);
CORRADE_COMPARE(Math::tan(2*Deg(22.5f)), 1.0f);
CORRADE_COMPARE(Math::tan(2*22.5_degf), 1.0f);
CORRADE_COMPARE(Math::tan(2*Rad(Constants::pi()/8)), 1.0f);
}

8
src/Magnum/Math/Test/Matrix3Test.cpp

@ -339,7 +339,7 @@ void Matrix3Test::rotation() {
{-0.258819f, 0.965926f, 0.0f},
{ 0.0f, 0.0f, 1.0f});
CORRADE_COMPARE(Matrix3::rotation(Deg(15.0f)), matrix);
CORRADE_COMPARE(Matrix3::rotation(15.0_degf), matrix);
}
void Matrix3Test::reflection() {
@ -618,12 +618,12 @@ void Matrix3Test::vectorParts() {
}
void Matrix3Test::invertedRigid() {
Matrix3 actual = Matrix3::rotation(Deg(-74.0f))*
Matrix3 actual = Matrix3::rotation(-74.0_degf)*
Matrix3::reflection(Vector2(0.5f, -2.0f).normalized())*
Matrix3::translation({2.0f, -3.0f});
Matrix3 expected = Matrix3::translation({-2.0f, 3.0f})*
Matrix3::reflection(Vector2(0.5f, -2.0f).normalized())*
Matrix3::rotation(Deg(74.0f));
Matrix3::rotation(74.0_degf);
CORRADE_COMPARE(actual.invertedRigid(), expected);
CORRADE_COMPARE(actual.invertedRigid(), actual.inverted());
@ -646,7 +646,7 @@ void Matrix3Test::invertedRigidNotRigid() {
}
void Matrix3Test::transform() {
Matrix3 a = Matrix3::translation({1.0f, -5.0f})*Matrix3::rotation(Deg(90.0f));
Matrix3 a = Matrix3::translation({1.0f, -5.0f})*Matrix3::rotation(90.0_degf);
Vector2 v(1.0f, -2.0f);
CORRADE_COMPARE(a.transformVector(v), Vector2(2.0f, 1.0f));

14
src/Magnum/Math/Test/Matrix4Test.cpp

@ -395,7 +395,7 @@ void Matrix4Test::rotation() {
{ 0.47987163f, 0.59757626f, 0.6423596f, 0.0f},
{-0.80181062f, 0.00151846f, 0.59757626f, 0.0f},
{ 0.0f, 0.0f, 0.0f, 1.0f});
CORRADE_COMPARE(Matrix4::rotation(Deg(-74.0f), Vector3(-1.0f, 2.0f, 2.0f).normalized()), matrix);
CORRADE_COMPARE(Matrix4::rotation(-74.0_degf, Vector3(-1.0f, 2.0f, 2.0f).normalized()), matrix);
}
void Matrix4Test::rotationNotNormalized() {
@ -406,7 +406,7 @@ void Matrix4Test::rotationNotNormalized() {
std::ostringstream out;
Error redirectError{&out};
Matrix4::rotation(Deg(-74.0f), {-1.0f, 2.0f, 2.0f});
Matrix4::rotation(-74.0_degf, {-1.0f, 2.0f, 2.0f});
CORRADE_COMPARE(out.str(), "Math::Matrix4::rotation(): axis Vector(-1, 2, 2) is not normalized\n");
}
@ -546,7 +546,7 @@ void Matrix4Test::perspectiveProjectionFov() {
{ 0.0f, 9.788454f, 0.0f, 0.0f},
{ 0.0f, 0.0f, -1.9411764f, -1.0f},
{ 0.0f, 0.0f, -94.1176452f, 0.0f});
CORRADE_COMPARE(Matrix4::perspectiveProjection(Deg(27.0f), 2.35f, 32.0f, 100.0f), expected);
CORRADE_COMPARE(Matrix4::perspectiveProjection(27.0_degf, 2.35f, 32.0f, 100.0f), expected);
}
void Matrix4Test::perspectiveProjectionFovInfiniteFar() {
@ -554,7 +554,7 @@ void Matrix4Test::perspectiveProjectionFovInfiniteFar() {
{ 0.0f, 9.788454f, 0.0f, 0.0f},
{ 0.0f, 0.0f, -1.0f, -1.0f},
{ 0.0f, 0.0f, -64.0f, 0.0f});
CORRADE_COMPARE(Matrix4::perspectiveProjection(Deg(27.0f), 2.35f, 32.0f, Constants::inf()), expected);
CORRADE_COMPARE(Matrix4::perspectiveProjection(27.0_degf, 2.35f, 32.0f, Constants::inf()), expected);
}
void Matrix4Test::perspectiveProjectionOffCenter() {
@ -942,12 +942,12 @@ void Matrix4Test::vectorParts() {
}
void Matrix4Test::invertedRigid() {
Matrix4 actual = Matrix4::rotation(Deg(-74.0f), Vector3(-1.0f, 0.5f, 2.0f).normalized())*
Matrix4 actual = Matrix4::rotation(-74.0_degf, Vector3(-1.0f, 0.5f, 2.0f).normalized())*
Matrix4::reflection(Vector3(0.5f, -2.0f, 2.0f).normalized())*
Matrix4::translation({1.0f, 2.0f, -3.0f});
Matrix4 expected = Matrix4::translation({-1.0f, -2.0f, 3.0f})*
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(74.0_degf, Vector3(-1.0f, 0.5f, 2.0f).normalized());
CORRADE_COMPARE(actual.invertedRigid(), expected);
@ -972,7 +972,7 @@ void Matrix4Test::invertedRigidNotRigid() {
}
void Matrix4Test::transform() {
Matrix4 a = Matrix4::translation({1.0f, -5.0f, 3.5f})*Matrix4::rotation(Deg(90.0f), Vector3::zAxis());
Matrix4 a = Matrix4::translation({1.0f, -5.0f, 3.5f})*Matrix4::rotation(90.0_degf, Vector3::zAxis());
Vector3 v(1.0f, -2.0f, 5.5f);
CORRADE_COMPARE(a.transformVector(v), Vector3(2.0f, 1.0f, 5.5f));

36
src/Magnum/Math/Test/QuaternionTest.cpp

@ -344,7 +344,7 @@ void QuaternionTest::compare() {
void QuaternionTest::isNormalized() {
CORRADE_VERIFY(!Quaternion({1.0f, 2.0f, 3.0f}, 4.0f).isNormalized());
CORRADE_VERIFY(Quaternion::rotation(Deg(23.0f), Vector3::xAxis()).isNormalized());
CORRADE_VERIFY(Quaternion::rotation(23.0_degf, Vector3::xAxis()).isNormalized());
}
template<class T> void QuaternionTest::isNormalizedEpsilon() {
@ -476,21 +476,21 @@ void QuaternionTest::invertedNormalizedNotNormalized() {
void QuaternionTest::rotation() {
Vector3 axis(1.0f/Constants<Float>::sqrt3());
Quaternion q = Quaternion::rotation(Deg(120.0f), axis);
Quaternion q = Quaternion::rotation(120.0_degf, axis);
CORRADE_COMPARE(q.length(), 1.0f);
CORRADE_COMPARE(q, Quaternion(Vector3(0.5f, 0.5f, 0.5f), 0.5f));
CORRADE_COMPARE_AS(q.angle(), Deg(120.0f), Deg);
CORRADE_COMPARE_AS(q.angle(), 120.0_degf, Deg);
CORRADE_COMPARE(q.axis(), axis);
CORRADE_COMPARE(q.axis().length(), 1.0f);
/* Verify negative angle */
Quaternion q2 = Quaternion::rotation(Deg(-120.0f), axis);
Quaternion q2 = Quaternion::rotation(-120.0_degf, axis);
CORRADE_COMPARE(q2, Quaternion(Vector3(-0.5f, -0.5f, -0.5f), 0.5f));
CORRADE_COMPARE_AS(q2.angle(), Deg(120.0f), Deg);
CORRADE_COMPARE_AS(q2.angle(), 120.0_degf, Deg);
CORRADE_COMPARE(q2.axis(), -axis);
/* Default-constructed quaternion has zero angle and NaN axis */
CORRADE_COMPARE_AS(Quaternion().angle(), Deg(0.0f), Deg);
CORRADE_COMPARE_AS(Quaternion().angle(), 0.0_degf, Deg);
CORRADE_VERIFY(Quaternion().axis() != Quaternion().axis());
}
@ -557,8 +557,8 @@ void QuaternionTest::angleNotNormalized() {
void QuaternionTest::matrix() {
Vector3 axis = Vector3(-3.0f, 1.0f, 5.0f).normalized();
Quaternion q = Quaternion::rotation(Deg(37.0f), axis);
Matrix3x3 m = Matrix4::rotation(Deg(37.0f), axis).rotationScaling();
Quaternion q = Quaternion::rotation(37.0_degf, axis);
Matrix3x3 m = Matrix4::rotation(37.0_degf, axis).rotationScaling();
/* Verify that negated quaternion gives the same rotation */
CORRADE_COMPARE(q.toMatrix(), m);
@ -569,8 +569,8 @@ void QuaternionTest::matrix() {
CORRADE_COMPARE(Quaternion::fromMatrix(m), q);
/* Trace < 0, max is diagonal[2] */
Matrix3x3 m2 = Matrix4::rotation(Deg(130.0f), axis).rotationScaling();
Quaternion q2 = Quaternion::rotation(Deg(130.0f), axis);
Matrix3x3 m2 = Matrix4::rotation(130.0_degf, axis).rotationScaling();
Quaternion q2 = Quaternion::rotation(130.0_degf, axis);
CORRADE_COMPARE_AS(m2.trace(), 0.0f, Corrade::TestSuite::Compare::Less);
CORRADE_COMPARE_AS(m2.diagonal()[2],
Math::max(m2.diagonal()[0], m2.diagonal()[1]),
@ -579,8 +579,8 @@ void QuaternionTest::matrix() {
/* Trace < 0, max is diagonal[1] */
Vector3 axis2 = Vector3(-3.0f, 5.0f, 1.0f).normalized();
Matrix3x3 m3 = Matrix4::rotation(Deg(130.0f), axis2).rotationScaling();
Quaternion q3 = Quaternion::rotation(Deg(130.0f), axis2);
Matrix3x3 m3 = Matrix4::rotation(130.0_degf, axis2).rotationScaling();
Quaternion q3 = Quaternion::rotation(130.0_degf, axis2);
CORRADE_COMPARE_AS(m3.trace(), 0.0f, Corrade::TestSuite::Compare::Less);
CORRADE_COMPARE_AS(m3.diagonal()[1],
Math::max(m3.diagonal()[0], m3.diagonal()[2]),
@ -589,8 +589,8 @@ void QuaternionTest::matrix() {
/* Trace < 0, max is diagonal[0] */
Vector3 axis3 = Vector3(5.0f, -3.0f, 1.0f).normalized();
Matrix3x3 m4 = Matrix4::rotation(Deg(130.0f), axis3).rotationScaling();
Quaternion q4 = Quaternion::rotation(Deg(130.0f), axis3);
Matrix3x3 m4 = Matrix4::rotation(130.0_degf, axis3).rotationScaling();
Quaternion q4 = Quaternion::rotation(130.0_degf, axis3);
CORRADE_COMPARE_AS(m4.trace(), 0.0f, Corrade::TestSuite::Compare::Less);
CORRADE_COMPARE_AS(m4.diagonal()[0],
Math::max(m4.diagonal()[1], m4.diagonal()[2]),
@ -876,8 +876,8 @@ void QuaternionTest::slerpShortestPathNotNormalized() {
}
void QuaternionTest::transformVector() {
Quaternion a = Quaternion::rotation(Deg(23.0f), Vector3::xAxis());
Matrix4 m = Matrix4::rotationX(Deg(23.0f));
Quaternion a = Quaternion::rotation(23.0_degf, Vector3::xAxis());
Matrix4 m = Matrix4::rotationX(23.0_degf);
Vector3 v(5.0f, -3.6f, 0.7f);
Vector3 rotated = a.transformVector(v);
@ -886,8 +886,8 @@ void QuaternionTest::transformVector() {
}
void QuaternionTest::transformVectorNormalized() {
Quaternion a = Quaternion::rotation(Deg(23.0f), Vector3::xAxis());
Matrix4 m = Matrix4::rotationX(Deg(23.0f));
Quaternion a = Quaternion::rotation(23.0_degf, Vector3::xAxis());
Matrix4 m = Matrix4::rotationX(23.0_degf);
Vector3 v(5.0f, -3.6f, 0.7f);
Vector3 rotated = a.transformVectorNormalized(v);

Loading…
Cancel
Save