gtx_norm.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #define GLM_ENABLE_EXPERIMENTAL
  2. #include <glm/gtx/norm.hpp>
  3. #include <glm/ext/scalar_relational.hpp>
  4. #include <glm/vec2.hpp>
  5. #include <glm/vec3.hpp>
  6. #include <glm/vec4.hpp>
  7. static int test_lMaxNorm()
  8. {
  9. int Error(0);
  10. {
  11. float norm = glm::lMaxNorm(glm::vec3(-1, -2, -3));
  12. Error += glm::equal(norm, 3.f, 0.00001f) ? 0 : 1;
  13. }
  14. {
  15. float norm = glm::lMaxNorm(glm::vec3(2, 3, 1));
  16. Error += glm::equal(norm, 3.f, 0.00001f) ? 0 : 1;
  17. }
  18. return Error;
  19. }
  20. static int test_lxNorm()
  21. {
  22. int Error(0);
  23. {
  24. unsigned int depth_1 = 1;
  25. float normA = glm::lxNorm(glm::vec3(2, 3, 1), depth_1);
  26. float normB = glm::l1Norm(glm::vec3(2, 3, 1));
  27. Error += glm::equal(normA, normB, 0.00001f) ? 0 : 1;
  28. Error += glm::equal(normA, 6.f, 0.00001f) ? 0 : 1;
  29. }
  30. {
  31. unsigned int depth_1 = 1;
  32. float normA = glm::lxNorm(glm::vec3(-1, -2, -3), depth_1);
  33. float normB = glm::l1Norm(glm::vec3(-1, -2, -3));
  34. Error += glm::equal(normA, normB, 0.00001f) ? 0 : 1;
  35. Error += glm::equal(normA, 6.f, 0.00001f) ? 0 : 1;
  36. }
  37. {
  38. unsigned int depth_2 = 2;
  39. float normA = glm::lxNorm(glm::vec3(2, 3, 1), depth_2);
  40. float normB = glm::l2Norm(glm::vec3(2, 3, 1));
  41. Error += glm::equal(normA, normB, 0.00001f) ? 0 : 1;
  42. Error += glm::equal(normA, 3.741657387f, 0.00001f) ? 0 : 1;
  43. }
  44. {
  45. unsigned int depth_2 = 2;
  46. float normA = glm::lxNorm(glm::vec3(-1, -2, -3), depth_2);
  47. float normB = glm::l2Norm(glm::vec3(-1, -2, -3));
  48. Error += glm::equal(normA, normB, 0.00001f) ? 0 : 1;
  49. Error += glm::equal(normA, 3.741657387f, 0.00001f) ? 0 : 1;
  50. }
  51. {
  52. unsigned int oddDepth = 3;
  53. float norm = glm::lxNorm(glm::vec3(2, 3, 1), oddDepth);
  54. Error += glm::equal(norm, 3.301927249f, 0.00001f) ? 0 : 1;
  55. }
  56. {
  57. unsigned int oddDepth = 3;
  58. float norm = glm::lxNorm(glm::vec3(-1, -2, -3), oddDepth);
  59. Error += glm::equal(norm, 3.301927249f, 0.00001f) ? 0 : 1;
  60. }
  61. return Error;
  62. }
  63. int main()
  64. {
  65. int Error(0);
  66. Error += test_lMaxNorm();
  67. Error += test_lxNorm();
  68. return Error;
  69. }