voronoi_mass.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <test_common.h>
  2. #include <igl/voronoi_mass.h>
  3. #include <igl/matlab_format.h>
  4. #include <iostream>
  5. TEST_CASE("voronoi_mass: equilateral-tetrahedra", "[igl]" )
  6. {
  7. // Tetrahedra
  8. Eigen::MatrixXd V(4,3);
  9. V << 0,0,0, 1,0,0, 0.5,sqrt(3.0)/2.0,0, 0.5,sqrt(3.0)/6.0,sqrt(2.0/3.0);
  10. Eigen::MatrixXi T(1,4);
  11. T << 0,1,2,3;
  12. Eigen::VectorXd M;
  13. igl::voronoi_mass(V,T,M);
  14. Eigen::VectorXd Mgt(4);
  15. Mgt <<
  16. 0.0294627825494395,
  17. 0.0294627825494395,
  18. 0.0294627825494395,
  19. 0.0294627825494395;
  20. test_common::assert_near(M,Mgt,1e-15);
  21. }
  22. TEST_CASE("voronoi_mass: right-tetrahedra", "[igl]" )
  23. {
  24. // Tetrahedra
  25. Eigen::MatrixXd V(4,3);
  26. V << 0,0,0, 1,0,0, 0,1,0, 0,0,1;
  27. Eigen::MatrixXi T(1,4);
  28. T << 0,1,2,3;
  29. Eigen::VectorXd M;
  30. igl::voronoi_mass(V,T,M);
  31. Eigen::VectorXd Mgt(4);
  32. Mgt <<
  33. 0.0833333333333333,
  34. 0.0277777777777778,
  35. 0.0277777777777778,
  36. 0.0277777777777778;
  37. test_common::assert_near(M,Mgt,1e-15);
  38. }
  39. // Obtuse tetrahedron
  40. TEST_CASE("voronoi_mass: obtuse-tetrahedra", "[igl]" )
  41. {
  42. Eigen::MatrixXd V(4,3);
  43. V << 0,0,0, 4,0,0, 2,1,0, 2,1,3;
  44. Eigen::MatrixXi T(1,4);
  45. T << 0,1,2,3;
  46. Eigen::VectorXd M;
  47. igl::voronoi_mass(V,T,M);
  48. Eigen::VectorXd Mgt(4);
  49. Mgt <<
  50. 0.325,
  51. 0.325,
  52. 1,
  53. 0.35;
  54. test_common::assert_near(M,Mgt,1e-15);
  55. }