moments.cpp 751 B

123456789101112131415161718192021222324252627
  1. #include <test_common.h>
  2. #include <igl/moments.h>
  3. TEST_CASE("moments: tet", "[igl]" )
  4. {
  5. const Eigen::MatrixXd V =
  6. (Eigen::MatrixXd(4,3)<<0,0,0, 1,0,0, 0,1,0, 0,0,1).finished();
  7. const Eigen::MatrixXi F =
  8. (Eigen::MatrixXi(4,3)<< 0,2,1, 0,3,2, 2,3,1, 0,1,3).finished();
  9. double m0;
  10. Eigen::Vector3d m1;
  11. Eigen::Matrix3d m2;
  12. igl::moments(V,F,m0,m1,m2);
  13. const double epsilon = 1e-15;
  14. double gt_m0 = 1.0/6.0;
  15. Eigen::Vector3d gt_m1(1./24.,1./24.,1./24.);
  16. Eigen::Matrix3d gt_m2;
  17. gt_m2 <<
  18. 1./80.,1./480.,1./480.,
  19. 1./480.,1./80.,1./480.,
  20. 1./480.,1./480.,1./80.;
  21. REQUIRE(m0 < gt_m0+epsilon);
  22. REQUIRE(m0+epsilon > gt_m0);
  23. test_common::assert_near(m1,gt_m1,epsilon);
  24. test_common::assert_near(m2,gt_m2,epsilon);
  25. }