rotz_quat_test.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
  2. //Distributed under the Boost Software License, Version 1.0. (See accompanying
  3. //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #include <boost/qvm/quat_operations.hpp>
  5. #include <boost/qvm/mat_operations.hpp>
  6. #include <boost/qvm/quat.hpp>
  7. #include "test_qvm_quaternion.hpp"
  8. #include "test_qvm_matrix.hpp"
  9. #include "gold.hpp"
  10. namespace
  11. {
  12. void
  13. test()
  14. {
  15. using namespace boost::qvm;
  16. for( float r=0; r<6.28f; r+=0.5f )
  17. {
  18. test_qvm::quaternion<Q1> q1=rotz_quat(r);
  19. test_qvm::matrix<M1,3,3> m1=convert_to< test_qvm::matrix<M1,3,3> >(q1);
  20. test_qvm::rotation_z(m1.b,r);
  21. BOOST_QVM_TEST_CLOSE(m1.a,m1.b,0.000001f);
  22. test_qvm::quaternion<Q2> q2(42,1);
  23. set_rotz(q2,r);
  24. test_qvm::matrix<M1,3,3> m2=convert_to< test_qvm::matrix<M1,3,3> >(q2);
  25. test_qvm::rotation_z(m2.b,r);
  26. BOOST_QVM_TEST_CLOSE(m2.a,m2.b,0.000001f);
  27. test_qvm::quaternion<Q1> q3(42,1);
  28. test_qvm::quaternion<Q1> r1=q3*q1;
  29. rotate_z(q3,r);
  30. BOOST_QVM_TEST_EQ(q3.a,r1.a);
  31. }
  32. rotz_quat(0.0f)+rotz_quat(0.0f);
  33. -rotz_quat(0.0f);
  34. }
  35. }
  36. int
  37. main()
  38. {
  39. test();
  40. return boost::report_errors();
  41. }