PlaneTests.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "../Tests.h"
  2. #include "core/Plane.h"
  3. static const float eps = 0.0001f;
  4. #define CV3(a, b, c) (&(CoreVector3){{a, b, c}})
  5. static void testToString1() {
  6. CorePlane p = CORE_PLANE;
  7. char buffer[128];
  8. coreToStringPlane(&p, buffer, sizeof(buffer));
  9. CORE_TEST_STRING("(0.000 x + 0.000 y + 0.000 z + 0.000)", buffer);
  10. }
  11. static void testToString2() {
  12. CorePlane p = CORE_PLANE;
  13. coreInitPlane(&p, CV3(3.0f, 6.0f, 8.0f), CV3(7.0f, 6.0f, 2.0f),
  14. CV3(4.0f, 4.0f, 4.0f));
  15. char buffer[128];
  16. coreToStringPlane(&p, buffer, sizeof(buffer));
  17. CORE_TEST_STRING("(-0.684 x + 0.570 y + -0.456 z + 2.279)", buffer);
  18. }
  19. static void testSignedDistance() {
  20. CoreVector3 a = {{3.0f, 6.0f, 8.0f}};
  21. CoreVector3 b = {{7.0f, 6.0f, 2.0f}};
  22. CoreVector3 c = {{4.0f, 4.0f, 4.0f}};
  23. CorePlane p = CORE_PLANE;
  24. coreInitPlane(&p, &a, &b, &c);
  25. CORE_TEST_FLOAT(0.0f, coreGetSignedDistance(&p, &a), eps);
  26. CORE_TEST_FLOAT(0.0f, coreGetSignedDistance(&p, &b), eps);
  27. CORE_TEST_FLOAT(0.0f, coreGetSignedDistance(&p, &c), eps);
  28. CORE_TEST_FLOAT(-1.13960576f,
  29. coreGetSignedDistance(&p, CV3(5.0f, 8.0f, 10.0f)), eps);
  30. CORE_TEST_FLOAT(0.911684612f,
  31. coreGetSignedDistance(&p, CV3(3.0f, 2.0f, 1.0f)), eps);
  32. }
  33. void coreTestPlane() {
  34. testToString1();
  35. testToString2();
  36. testSignedDistance();
  37. }