tetrahedralize.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <test_common.h>
  2. #include <igl/setxor.h>
  3. #include <igl/copyleft/tetgen/tetrahedralize.h>
  4. TEST_CASE("tetrahedralize: single_tet", "[igl/copyleft/tetgen]")
  5. {
  6. const Eigen::MatrixXd V = (Eigen::MatrixXd(4,3)<<
  7. 0,0,0,
  8. 1,0,0,
  9. 0,1,0,
  10. 0,0,1).finished();
  11. Eigen::MatrixXi F(0,3);
  12. Eigen::MatrixXd TV;
  13. Eigen::MatrixXi TT,TF;
  14. igl::copyleft::tetgen::tetrahedralize(V,F,"cpQ",TV,TT,TF);
  15. REQUIRE (4 == TV.rows());
  16. REQUIRE (1 == TT.rows());
  17. REQUIRE (4 == TF.rows());
  18. Eigen::MatrixXi TTcorrect = (Eigen::MatrixXi(1,4)<<0,1,2,3).finished();
  19. {
  20. Eigen::VectorXi TT_XOR,IA,IB;
  21. igl::setxor(TT,TTcorrect,TT_XOR,IA,IB);
  22. REQUIRE (0 == TT_XOR.size());
  23. }
  24. test_common::assert_eq(TV,V);
  25. }
  26. TEST_CASE("tetrahedralize: schoenhardt", "[igl/copyleft/tetgen]")
  27. {
  28. const Eigen::MatrixXd V = (Eigen::MatrixXd(6,3)<<
  29. -246.2,-43.412,500,
  30. 160.7,-191.51,500,
  31. 85.505, 234.92,500,
  32. 250, 0, 0,
  33. -125, 216.51, 0,
  34. -125,-216.51, 0).finished();
  35. const Eigen::MatrixXi F = (Eigen::MatrixXi(8,3)<<
  36. 1,2,0,
  37. 5,0,2,
  38. 3,1,0,
  39. 4,2,1,
  40. 0,5,3,
  41. 1,3,4,
  42. 2,4,5,
  43. 3,5,4).finished();
  44. Eigen::MatrixXd TV;
  45. Eigen::MatrixXi TT,TF;
  46. igl::copyleft::tetgen::tetrahedralize(V,F,"pQ",TV,TT,TF);
  47. REQUIRE (V.rows() <= TV.rows());
  48. }