triangle_triangle_intersect.cpp 919 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "test_common.h"
  2. #include <igl/triangle_triangle_intersect.h>
  3. #include <igl/edge_flaps.h>
  4. TEST_CASE("triangle_triangle_intersect: shared-edge", "[igl]" )
  5. {
  6. Eigen::MatrixXd V(4,3);
  7. V<<
  8. 0,0,0,
  9. 1,0,0,
  10. 0,1,0,
  11. -1,0,0;
  12. Eigen::MatrixXi F(2,3);
  13. F <<
  14. 0,1,2,
  15. 0,2,3;
  16. // 2
  17. // ╱|╲
  18. // ╱ | ╲
  19. // ╱ | ╲
  20. // 3---0---1
  21. const int f = 0;
  22. const int c = 1;
  23. const int g = 1;
  24. Eigen::MatrixXi E,EF,EI;
  25. Eigen::VectorXi EMAP;
  26. igl::edge_flaps(F,E,EMAP,EF,EI);
  27. bool ret;
  28. ret = igl::triangle_triangle_intersect(V,F,E,EMAP,EF,f,c,V.row(F(f,c)),g);
  29. REQUIRE(ret == false);
  30. for(const double epsilon : {0.,1e-15,-1e-15})
  31. {
  32. // 2
  33. // |╲⟍
  34. // | ╲ ⟍
  35. // | ╲ ⟍
  36. // 0---1---3
  37. V.row(3) << 2.0+epsilon,0,0;
  38. ret = igl::triangle_triangle_intersect(V,F,E,EMAP,EF,f,c,V.row(F(f,c)),g);
  39. REQUIRE(ret == true);
  40. }
  41. }