gtx_matrix_decompose.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #define GLM_ENABLE_EXPERIMENTAL
  2. #include <glm/gtx/matrix_decompose.hpp>
  3. #include <glm/ext/matrix_relational.hpp>
  4. #include <glm/ext/matrix_transform.hpp>
  5. #include <glm/ext/scalar_constants.hpp>
  6. static int test_identity() {
  7. int Error = 0;
  8. glm::mat4 Matrix(1);
  9. glm::vec3 Scale;
  10. glm::quat Orientation;
  11. glm::vec3 Translation;
  12. glm::vec3 Skew(1);
  13. glm::vec4 Perspective(1);
  14. glm::decompose(Matrix, Scale, Orientation, Translation, Skew, Perspective);
  15. glm::mat4 Out = glm::recompose(Scale, Orientation, Translation, Skew, Perspective);
  16. Error += glm::all(glm::equal(Matrix, Out, glm::epsilon<float>())) ? 0 : 1;
  17. return Error;
  18. }
  19. static int test_scale_translate() {
  20. int Error = 0;
  21. glm::vec3 const T(2.0f);
  22. glm::vec3 const S(2.0f);
  23. glm::mat4 Matrix = glm::translate(glm::scale(glm::mat4(1), S), T);
  24. glm::vec3 Scale(2);
  25. glm::quat Orientation;
  26. glm::vec3 Translation(2);
  27. glm::vec3 Skew(1);
  28. glm::vec4 Perspective(1);
  29. glm::decompose(Matrix, Scale, Orientation, Translation, Skew, Perspective);
  30. glm::mat4 Out = glm::recompose(Scale, Orientation, Translation, Skew, Perspective);
  31. Error += glm::all(glm::equal(Matrix, Out, glm::epsilon<float>())) ? 0 : 1;
  32. return Error;
  33. }
  34. int main()
  35. {
  36. int Error = 0;
  37. Error += test_identity();
  38. Error += test_scale_translate();
  39. return Error;
  40. }