void DualQuaternionTransformationTest::setTransformation() { Object3D o; /* Can't transform with non-rigid transformation */ std::ostringstream out; Error redirectError{&out}; o.setTransformation(DualQuaternion({{1.0f, 2.0f, 3.0f}, 4.0f}, {})); CORRADE_COMPARE(out.str(), "SceneGraph::DualQuaternionTransformation::setTransformation(): the dual quaternion is not normalized\n"); /* Dirty after setting transformation */ o.setClean(); CORRADE_VERIFY(!o.isDirty()); o.setTransformation(DualQuaternion::rotation(Deg(17.0f), Vector3::xAxis())); CORRADE_VERIFY(o.isDirty()); CORRADE_COMPARE(o.transformationMatrix(), Matrix4::rotationX(Deg(17.0f))); /* Scene cannot be transformed */ Scene3D s; s.setClean(); CORRADE_VERIFY(!s.isDirty()); s.setTransformation(DualQuaternion::rotation(Deg(17.0f), Vector3::xAxis())); CORRADE_VERIFY(!s.isDirty()); CORRADE_COMPARE(s.transformationMatrix(), Matrix4()); }
void RigidMatrixTransformation3DTest::setTransformation() { Object3D o; /* Can't transform with non-rigid transformation */ std::ostringstream out; Error::setOutput(&out); o.setTransformation(Matrix4::scaling(Vector3(3.0f))); CORRADE_COMPARE(out.str(), "SceneGraph::RigidMatrixTransformation3D::setTransformation(): the matrix doesn't represent rigid transformation\n"); /* Dirty after setting transformation */ o.setClean(); CORRADE_VERIFY(!o.isDirty()); o.setTransformation(Matrix4::rotationX(Deg(17.0f))); CORRADE_VERIFY(o.isDirty()); CORRADE_COMPARE(o.transformationMatrix(), Matrix4::rotationX(Deg(17.0f))); /* Scene cannot be transformed */ Scene3D s; s.setClean(); CORRADE_VERIFY(!s.isDirty()); s.setTransformation(Matrix4::rotationX(Deg(17.0f))); CORRADE_VERIFY(!s.isDirty()); CORRADE_COMPARE(s.transformationMatrix(), Matrix4()); }