Browse Source

Math: various code cleanup.

pull/7/head
Vladimír Vondruš 13 years ago
parent
commit
95982e5176
  1. 4
      src/Math/Quaternion.cpp
  2. 8
      src/Math/Quaternion.h
  3. 4
      src/Math/Test/CMakeLists.txt
  4. 33
      src/Math/Test/QuaternionTest.cpp

4
src/Math/Quaternion.cpp

@ -18,9 +18,9 @@
namespace Magnum { namespace Math { namespace Magnum { namespace Math {
#ifndef DOXYGEN_GENERATING_OUTPUT #ifndef DOXYGEN_GENERATING_OUTPUT
template Corrade::Utility::Debug operator<<(Corrade::Utility::Debug, const Magnum::Math::Quaternion<float>&); template Corrade::Utility::Debug operator<<(Corrade::Utility::Debug, const Quaternion<float>&);
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
template Corrade::Utility::Debug operator<<(Corrade::Utility::Debug, const Magnum::Math::Quaternion<double>&); template Corrade::Utility::Debug operator<<(Corrade::Utility::Debug, const Quaternion<double>&);
#endif #endif
#endif #endif

8
src/Math/Quaternion.h

@ -119,7 +119,11 @@ template<class T> class Quaternion {
return {normalizedAxis*std::sin(angle/2), std::cos(angle/2)}; return {normalizedAxis*std::sin(angle/2), std::cos(angle/2)};
} }
/** @brief Default constructor */ /**
* @brief Default constructor
*
* %Vector part is set to zero, scalar part to `1`.
*/
inline constexpr /*implicit*/ Quaternion(): _scalar(T(1)) {} inline constexpr /*implicit*/ Quaternion(): _scalar(T(1)) {}
/** @brief Create quaternion from vector and scalar */ /** @brief Create quaternion from vector and scalar */
@ -435,7 +439,7 @@ template<class T> inline Quaternion<T> operator/(T scalar, const Quaternion<T>&
return {scalar/quaternion.vector(), scalar/quaternion.scalar()}; return {scalar/quaternion.vector(), scalar/quaternion.scalar()};
} }
/** @debugoperator{Magnum::Math::Geometry::Rectangle} */ /** @debugoperator{Magnum::Math::Quaternion} */
template<class T> Corrade::Utility::Debug operator<<(Corrade::Utility::Debug debug, const Quaternion<T>& value) { template<class T> Corrade::Utility::Debug operator<<(Corrade::Utility::Debug debug, const Quaternion<T>& value) {
debug << "Quaternion({"; debug << "Quaternion({";
debug.setFlag(Corrade::Utility::Debug::SpaceAfterEachValue, false); debug.setFlag(Corrade::Utility::Debug::SpaceAfterEachValue, false);

4
src/Math/Test/CMakeLists.txt

@ -3,16 +3,14 @@ corrade_add_test(MathConstantsTest ConstantsTest.cpp)
corrade_add_test(MathFunctionsTest FunctionsTest.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathFunctionsTest FunctionsTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathMathTypeTraitsTest MathTypeTraitsTest.cpp) corrade_add_test(MathMathTypeTraitsTest MathTypeTraitsTest.cpp)
corrade_add_test(MathRectangularMatrixTest RectangularMatrixTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathVectorTest VectorTest.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathVectorTest VectorTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathVector2Test Vector2Test.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathVector2Test Vector2Test.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathVector3Test Vector3Test.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathVector3Test Vector3Test.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathVector4Test Vector4Test.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathVector4Test Vector4Test.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathPoint2DTest Point2DTest.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathPoint2DTest Point2DTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathPoint3DTest Point3DTest.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathPoint3DTest Point3DTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathRectangularMatrixTest RectangularMatrixTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathMatrixTest MatrixTest.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathMatrixTest MatrixTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathMatrix3Test Matrix3Test.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathMatrix3Test Matrix3Test.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test(MathMatrix4Test Matrix4Test.cpp LIBRARIES MagnumMathTestLib) corrade_add_test(MathMatrix4Test Matrix4Test.cpp LIBRARIES MagnumMathTestLib)

33
src/Math/Test/QuaternionTest.cpp

@ -29,17 +29,21 @@ class QuaternionTest: public Corrade::TestSuite::Tester {
void construct(); void construct();
void constructDefault(); void constructDefault();
void constructFromVector(); void constructFromVector();
void addSubtract(); void addSubtract();
void negated(); void negated();
void multiplyDivideScalar(); void multiplyDivideScalar();
void multiply(); void multiply();
void dot(); void dot();
void dotSelf(); void dotSelf();
void length(); void length();
void normalized(); void normalized();
void conjugated(); void conjugated();
void inverted(); void inverted();
void invertedNormalized(); void invertedNormalized();
void rotation(); void rotation();
void angle(); void angle();
void matrix(); void matrix();
@ -58,17 +62,21 @@ QuaternionTest::QuaternionTest() {
addTests(&QuaternionTest::construct, addTests(&QuaternionTest::construct,
&QuaternionTest::constructDefault, &QuaternionTest::constructDefault,
&QuaternionTest::constructFromVector, &QuaternionTest::constructFromVector,
&QuaternionTest::addSubtract, &QuaternionTest::addSubtract,
&QuaternionTest::negated, &QuaternionTest::negated,
&QuaternionTest::multiplyDivideScalar, &QuaternionTest::multiplyDivideScalar,
&QuaternionTest::multiply, &QuaternionTest::multiply,
&QuaternionTest::dot, &QuaternionTest::dot,
&QuaternionTest::dotSelf, &QuaternionTest::dotSelf,
&QuaternionTest::length, &QuaternionTest::length,
&QuaternionTest::normalized, &QuaternionTest::normalized,
&QuaternionTest::conjugated, &QuaternionTest::conjugated,
&QuaternionTest::inverted, &QuaternionTest::inverted,
&QuaternionTest::invertedNormalized, &QuaternionTest::invertedNormalized,
&QuaternionTest::rotation, &QuaternionTest::rotation,
&QuaternionTest::angle, &QuaternionTest::angle,
&QuaternionTest::matrix, &QuaternionTest::matrix,
@ -76,6 +84,7 @@ QuaternionTest::QuaternionTest() {
&QuaternionTest::slerp, &QuaternionTest::slerp,
&QuaternionTest::rotateVector, &QuaternionTest::rotateVector,
&QuaternionTest::rotateVectorNormalized, &QuaternionTest::rotateVectorNormalized,
&QuaternionTest::debug); &QuaternionTest::debug);
} }
@ -86,7 +95,7 @@ void QuaternionTest::construct() {
} }
void QuaternionTest::constructDefault() { void QuaternionTest::constructDefault() {
CORRADE_COMPARE(Quaternion(), Quaternion({0.0f, 0.0f, 0.0f}, {1.0f})); CORRADE_COMPARE(Quaternion(), Quaternion({0.0f, 0.0f, 0.0f}, 1.0f));
} }
void QuaternionTest::constructFromVector() { void QuaternionTest::constructFromVector() {
@ -94,12 +103,12 @@ void QuaternionTest::constructFromVector() {
} }
void QuaternionTest::addSubtract() { void QuaternionTest::addSubtract() {
Quaternion a({1.0f, 3.0f, -2.0f}, -4.0f); Quaternion a({ 1.0f, 3.0f, -2.0f}, -4.0f);
Quaternion b({-0.5f, 1.4f, 3.0f}, 12.0f); Quaternion b({-0.5f, 1.4f, 3.0f}, 12.0f);
Quaternion c({0.5f, 4.4f, 1.0f}, 8.0f); Quaternion c({ 0.5f, 4.4f, 1.0f}, 8.0f);
CORRADE_COMPARE(a+b, c); CORRADE_COMPARE(a + b, c);
CORRADE_COMPARE(c-b, a); CORRADE_COMPARE(c - b, a);
} }
void QuaternionTest::negated() { void QuaternionTest::negated() {
@ -107,8 +116,8 @@ void QuaternionTest::negated() {
} }
void QuaternionTest::multiplyDivideScalar() { void QuaternionTest::multiplyDivideScalar() {
Quaternion a({1.0f, 3.0f, -2.0f}, -4.0f); Quaternion a({ 1.0f, 3.0f, -2.0f}, -4.0f);
Quaternion b({-1.5f, -4.5f, 3.0f}, 6.0f); Quaternion b({-1.5f, -4.5f, 3.0f}, 6.0f);
CORRADE_COMPARE(a*-1.5f, b); CORRADE_COMPARE(a*-1.5f, b);
CORRADE_COMPARE(-1.5f*a, b); CORRADE_COMPARE(-1.5f*a, b);
@ -123,8 +132,8 @@ void QuaternionTest::multiply() {
} }
void QuaternionTest::dot() { void QuaternionTest::dot() {
Quaternion a({1.0f, 3.0f, -2.0f}, -4.0f); Quaternion a({ 1.0f, 3.0f, -2.0f}, -4.0f);
Quaternion b({-0.5f, 1.5f, 3.0f}, 12.0f); Quaternion b({-0.5f, 1.5f, 3.0f}, 12.0f);
CORRADE_COMPARE(Quaternion::dot(a, b), -50.0f); CORRADE_COMPARE(Quaternion::dot(a, b), -50.0f);
} }
@ -144,8 +153,8 @@ void QuaternionTest::normalized() {
} }
void QuaternionTest::conjugated() { void QuaternionTest::conjugated() {
CORRADE_COMPARE(Quaternion({1.0f, 3.0f, -2.0f}, -4.0f).conjugated(), CORRADE_COMPARE(Quaternion({ 1.0f, 3.0f, -2.0f}, -4.0f).conjugated(),
Quaternion({-1.0f, -3.0f, 2.0f}, -4.0f)); Quaternion({-1.0f, -3.0f, 2.0f}, -4.0f));
} }
void QuaternionTest::inverted() { void QuaternionTest::inverted() {

Loading…
Cancel
Save