internal_angles.cpp 981 B

123456789101112131415161718192021222324252627282930313233
  1. #include <test_common.h>
  2. #include <igl/internal_angles.h>
  3. #include <igl/internal_angles_intrinsic.h>
  4. #include <igl/matlab_format.h>
  5. #include <igl/squared_edge_lengths.h>
  6. TEST_CASE("internal_angles: 1e-7", "[igl]")
  7. {
  8. Eigen::MatrixXd V =
  9. (Eigen::MatrixXd(3,3)<< 0,0,0,1,1,0,1+1e-7,1,0).finished();
  10. Eigen::MatrixXi F = (Eigen::MatrixXi(1,3)<<0,1,2).finished();
  11. Eigen::MatrixXd A;
  12. igl::internal_angles(V,F,A);
  13. Eigen::MatrixXd L_sq;
  14. igl::squared_edge_lengths(V,F,L_sq);
  15. Eigen::MatrixXd iA;
  16. igl::internal_angles_intrinsic(L_sq,iA);
  17. test_common::assert_near(A,iA,1e-6);
  18. Eigen::MatrixXf fV = V.cast<float>();
  19. Eigen::MatrixXf fA;
  20. igl::internal_angles(fV,F,fA);
  21. test_common::assert_near(A,fA.cast<double>(),1e-6);
  22. // https://github.com/libigl/libigl/issues/1463
  23. Eigen::MatrixXf fL_sq;
  24. igl::squared_edge_lengths(fV,F,fL_sq);
  25. Eigen::MatrixXf fiA;
  26. igl::internal_angles_intrinsic(fL_sq,fiA);
  27. test_common::assert_near(A,fiA.cast<double>(),1e-6);
  28. }