Platformer in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.0 KiB

5 years ago
  1. #include <glm/gtc/matrix_inverse.hpp>
  2. #include <glm/gtc/epsilon.hpp>
  3. int test_affine()
  4. {
  5. int Error = 0;
  6. {
  7. glm::mat3 const M(
  8. 2.f, 0.f, 0.f,
  9. 0.f, 2.f, 0.f,
  10. 0.f, 0.f, 1.f);
  11. glm::mat3 const A = glm::affineInverse(M);
  12. glm::mat3 const I = glm::inverse(M);
  13. glm::mat3 const R = glm::affineInverse(A);
  14. for(glm::length_t i = 0; i < A.length(); ++i)
  15. {
  16. Error += glm::all(glm::epsilonEqual(M[i], R[i], 0.01f)) ? 0 : 1;
  17. Error += glm::all(glm::epsilonEqual(A[i], I[i], 0.01f)) ? 0 : 1;
  18. }
  19. }
  20. {
  21. glm::mat4 const M(
  22. 2.f, 0.f, 0.f, 0.f,
  23. 0.f, 2.f, 0.f, 0.f,
  24. 0.f, 0.f, 2.f, 0.f,
  25. 0.f, 0.f, 0.f, 1.f);
  26. glm::mat4 const A = glm::affineInverse(M);
  27. glm::mat4 const I = glm::inverse(M);
  28. glm::mat4 const R = glm::affineInverse(A);
  29. for(glm::length_t i = 0; i < A.length(); ++i)
  30. {
  31. Error += glm::all(glm::epsilonEqual(M[i], R[i], 0.01f)) ? 0 : 1;
  32. Error += glm::all(glm::epsilonEqual(A[i], I[i], 0.01f)) ? 0 : 1;
  33. }
  34. }
  35. return Error;
  36. }
  37. int main()
  38. {
  39. int Error = 0;
  40. Error += test_affine();
  41. return Error;
  42. }