Browse Source

Math: overload Matrix::diagonal() in subclasses to return proper type.

pull/51/head
Vladimír Vondruš 13 years ago
parent
commit
c3a9f429be
  1. 1
      src/Math/Matrix.h
  2. 2
      src/Math/Test/MatrixTest.cpp

1
src/Math/Matrix.h

@ -240,6 +240,7 @@ template<std::size_t size, class T> inline Corrade::Utility::Debug operator<<(Co
} \
\
Type<T> transposed() const { return Matrix<size, T>::transposed(); } \
constexpr VectorType<T> diagonal() const { return Matrix<size, T>::diagonal(); } \
Type<T> inverted() const { return Matrix<size, T>::inverted(); } \
Type<T> invertedOrthogonal() const { \
return Matrix<size, T>::invertedOrthogonal(); \

2
src/Math/Test/MatrixTest.cpp

@ -314,6 +314,7 @@ void MatrixTest::subclassTypes() {
CORRADE_VERIFY((std::is_same<decltype(c*cv), Vec2>::value));
CORRADE_VERIFY((std::is_same<decltype(c.transposed()), Mat2>::value));
CORRADE_VERIFY((std::is_same<decltype(c.diagonal()), Vec2>::value));
CORRADE_VERIFY((std::is_same<decltype(c.inverted()), Mat2>::value));
CORRADE_VERIFY((std::is_same<decltype(c.invertedOrthogonal()), Mat2>::value));
}
@ -333,6 +334,7 @@ void MatrixTest::subclass() {
CORRADE_COMPARE(a.transposed(), Mat2(Vec2(2.0f, 3.0f),
Vec2(3.5f, 1.0f)));
CORRADE_COMPARE(a.diagonal(), Vec2(2.0f, 1.0f));
Mat2 c(Vec2(Constants::sqrt2()/2.0f, Constants::sqrt2()/2.0f),
Vec2(-Constants::sqrt2()/2.0f, Constants::sqrt2()/2.0f));

Loading…
Cancel
Save