Browse Source

SceneGraph: assert proper matrix type in RigidMatrixTransformation*D.

pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
e4f14c4163
  1. 4
      src/SceneGraph/RigidMatrixTransformation2D.h
  2. 4
      src/SceneGraph/RigidMatrixTransformation3D.h
  3. 4
      src/SceneGraph/Test/CMakeLists.txt
  4. 6
      src/SceneGraph/Test/RigidMatrixTransformation2DTest.cpp
  5. 6
      src/SceneGraph/Test/RigidMatrixTransformation3DTest.cpp

4
src/SceneGraph/RigidMatrixTransformation2D.h

@ -54,7 +54,9 @@ class RigidMatrixTransformation2D: public AbstractTranslationRotation2D<T> {
typedef typename DimensionTraits<2, T>::MatrixType DataType;
#ifndef DOXYGEN_GENERATING_OUTPUT
inline constexpr static Math::Matrix3<T> fromMatrix(const Math::Matrix3<T>& matrix) {
inline static Math::Matrix3<T> fromMatrix(const Math::Matrix3<T>& matrix) {
CORRADE_ASSERT(matrix.isRigidTransformation(),
"SceneGraph::RigidMatrixTransformation2D::fromMatrix(): the matrix doesn't represent rigid transformation", {});
return matrix;
}

4
src/SceneGraph/RigidMatrixTransformation3D.h

@ -54,7 +54,9 @@ class RigidMatrixTransformation3D: public AbstractTranslationRotation3D<T> {
typedef typename DimensionTraits<3, T>::MatrixType DataType;
#ifndef DOXYGEN_GENERATING_OUTPUT
inline constexpr static Math::Matrix4<T> fromMatrix(const Math::Matrix4<T>& matrix) {
inline static Math::Matrix4<T> fromMatrix(const Math::Matrix4<T>& matrix) {
CORRADE_ASSERT(matrix.isRigidTransformation(),
"SceneGraph::RigidMatrixTransformation3D::fromMatrix(): the matrix doesn't represent rigid transformation", {});
return matrix;
}

4
src/SceneGraph/Test/CMakeLists.txt

@ -30,3 +30,7 @@ corrade_add_test(SceneGraphObjectTest ObjectTest.cpp LIBRARIES MagnumSceneGraphT
corrade_add_test(SceneGraphRigidMatrixTransfor___2DTest RigidMatrixTransformation2DTest.cpp LIBRARIES MagnumSceneGraph)
corrade_add_test(SceneGraphRigidMatrixTransfor___3DTest RigidMatrixTransformation3DTest.cpp LIBRARIES MagnumSceneGraph)
corrade_add_test(SceneGraphSceneTest SceneTest.cpp LIBRARIES MagnumSceneGraph)
set_target_properties(SceneGraphRigidMatrixTransfor___2DTest
SceneGraphRigidMatrixTransfor___3DTest
PROPERTIES COMPILE_FLAGS "-DCORRADE_GRACEFUL_ASSERT")

6
src/SceneGraph/Test/RigidMatrixTransformation2DTest.cpp

@ -22,6 +22,7 @@
DEALINGS IN THE SOFTWARE.
*/
#include <sstream>
#include <TestSuite/Tester.h>
#include "SceneGraph/RigidMatrixTransformation2D.h"
@ -64,6 +65,11 @@ RigidMatrixTransformation2DTest::RigidMatrixTransformation2DTest() {
}
void RigidMatrixTransformation2DTest::fromMatrix() {
std::ostringstream o;
Error::setOutput(&o);
RigidMatrixTransformation2D<>::fromMatrix(Matrix3::scaling(Vector2(4.0f)));
CORRADE_COMPARE(o.str(), "SceneGraph::RigidMatrixTransformation2D::fromMatrix(): the matrix doesn't represent rigid transformation\n");
Matrix3 m = Matrix3::rotation(Deg(17.0f))*Matrix3::translation({1.0f, -0.3f});
CORRADE_COMPARE(RigidMatrixTransformation2D<>::fromMatrix(m), m);
}

6
src/SceneGraph/Test/RigidMatrixTransformation3DTest.cpp

@ -22,6 +22,7 @@
DEALINGS IN THE SOFTWARE.
*/
#include <sstream>
#include <TestSuite/Tester.h>
#include "SceneGraph/RigidMatrixTransformation3D.h"
@ -64,6 +65,11 @@ RigidMatrixTransformation3DTest::RigidMatrixTransformation3DTest() {
}
void RigidMatrixTransformation3DTest::fromMatrix() {
std::ostringstream o;
Error::setOutput(&o);
RigidMatrixTransformation3D<>::fromMatrix(Matrix4::scaling(Vector3(4.0f)));
CORRADE_COMPARE(o.str(), "SceneGraph::RigidMatrixTransformation3D::fromMatrix(): the matrix doesn't represent rigid transformation\n");
Matrix4 m = Matrix4::rotationX(Deg(17.0f))*Matrix4::translation({1.0f, -0.3f, 2.3f});
CORRADE_COMPARE(RigidMatrixTransformation3D<>::fromMatrix(m), m);
}

Loading…
Cancel
Save