tetrahedralize.cpp 1.2 KB

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