gtc_quaternion.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////
  2. // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
  3. ///////////////////////////////////////////////////////////////////////////////////////////////////
  4. // Created : 2010-09-16
  5. // Updated : 2011-05-25
  6. // Licence : This source is under MIT licence
  7. // File : test/gtc/quaternion.cpp
  8. ///////////////////////////////////////////////////////////////////////////////////////////////////
  9. #include <glm/glm.hpp>
  10. #include <glm/gtc/quaternion.hpp>
  11. #include <glm/gtx/epsilon.hpp>
  12. int test_quat_type()
  13. {
  14. glm::quat A;
  15. glm::dquat B;
  16. return 0;
  17. }
  18. int test_quat_slerp()
  19. {
  20. int Error = 0;
  21. glm::quat A(0.0f, glm::vec3(0, 0, 1));
  22. glm::quat B(90.0f, glm::vec3(0, 0, 1));
  23. glm::quat C = glm::mix(A, B, 0.5f);
  24. Error += C == glm::quat(45.f, glm::vec3(0, 0, 1)) ? 0 : 1;
  25. return Error;
  26. }
  27. int test_quat_length()
  28. {
  29. int Error = 0;
  30. float A = glm::length(glm::quat(45.0f, glm::vec3(0, 0, 1)));
  31. Error += A == 1.0f ? 0 : 1;
  32. float B = glm::length(glm::quat(90.0f, glm::vec3(0, 0, 2)));
  33. Error += B == 2.0f ? 0 : 1;
  34. return Error;
  35. }
  36. int test_quat_normalize()
  37. {
  38. int Error = 0;
  39. {
  40. glm::quat Q(45.0f, glm::vec3(0, 0, 1));
  41. glm::quat N = glm::normalize(Q);
  42. float L = glm::length(N);
  43. Error += L == 1.0f ? 0 : 1;
  44. }
  45. {
  46. glm::quat Q(45.0f, glm::vec3(0, 0, 2));
  47. glm::quat N = glm::normalize(Q);
  48. float L = glm::length(N);
  49. Error += L == 1.0f ? 0 : 1;
  50. }
  51. {
  52. glm::quat Q(45.0f, glm::vec3(1, 2, 3));
  53. glm::quat N = glm::normalize(Q);
  54. float L = glm::length(N);
  55. Error += L == 1.0f ? 0 : 1;
  56. }
  57. return Error;
  58. }
  59. int main()
  60. {
  61. int Error = 0;
  62. Error += test_quat_type();
  63. Error += test_quat_slerp();
  64. Error += test_quat_length();
  65. Error += test_quat_normalize();
  66. return Error;
  67. }