#include "ConvertTestCase.h" #include "components/ogre/Convert.h" using namespace Ember::OgreView; using namespace WFMath; namespace Ember { void ConvertTestCase::testWFMathToOgre() { WFMath::Point<3> wfPoint(10, 5, 2); WFMath::AxisBox<3> wfBox(WFMath::Point<3>(0, 0, 0), wfPoint); WFMath::Quaternion wfQuat; wfQuat.rotation(1, -WFMath::numeric_constants::pi() / 2.0f); WFMath::RotMatrix<3> wfRotMatrix(wfQuat); WFMath::Quaternion wfQuat2; wfQuat2.fromRotMatrix(wfRotMatrix); wfPoint.rotate(wfQuat, WFMath::Point<3>::ZERO()); Ogre::AxisAlignedBox ogreBox(Ogre::Vector3(0, 0, 0), Ogre::Vector3(10, 5, 2)); Ogre::Vector3 ogrePoint(10, 5, 2); Ogre::Quaternion ogreQuat = Convert::toOgre(wfQuat); Ogre::Matrix3 ogreMatrix; ogreQuat.ToRotationMatrix(ogreMatrix); Ogre::Quaternion ogreQuat2(ogreMatrix); ogreBox.transform(Ogre::Affine3(Ogre::Vector3::ZERO, ogreQuat2)); Point<2> wfMathPoint2(10, 20); CPPUNIT_ASSERT(wfMathPoint2 == Convert::toWF(Convert::toOgre(wfMathPoint2))); CPPUNIT_ASSERT(wfMathPoint2 == Convert::toWF>(Convert::toOgre(wfMathPoint2))); Point<3> wfMathPoint3(10, 20, 30); CPPUNIT_ASSERT(wfMathPoint3 == Convert::toWF>(Convert::toOgre(wfMathPoint3))); Vector<2> wfMathVector2(10, 20); CPPUNIT_ASSERT(Point<2>(wfMathVector2) == Convert::toWF(Convert::toOgre(wfMathVector2))); Vector<3> wfMathVector3(10, 20, 30); CPPUNIT_ASSERT(wfMathVector3 == Convert::toWF>(Convert::toOgre(wfMathVector3))); Quaternion wfQuaternion(1, 2.4f); CPPUNIT_ASSERT(wfQuaternion.isEqualTo(Convert::toWF(Convert::toOgre(wfQuaternion)), 0.0001)); WFMath::AxisBox<3> wfAxisBox3(Point<3>(1,2,3), Point<3>(10, 20, 30)); CPPUNIT_ASSERT(wfAxisBox3 == Convert::toWF(Convert::toOgre(wfAxisBox3))); WFMath::AxisBox<2> wfAxisBox2(Point<2>(1,2), Point<2>(10, 20)); CPPUNIT_ASSERT(wfAxisBox2 == Convert::toWF(Convert::toOgre(wfAxisBox2))); //TRect has bottom >= top CPPUNIT_ASSERT(Convert::toOgre(wfAxisBox2).bottom > Convert::toOgre(wfAxisBox2).top); CPPUNIT_ASSERT(Convert::toOgre(wfAxisBox2).right > Convert::toOgre(wfAxisBox2).left); } }