intrinsic_delaunay_triangulation.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <test_common.h>
  2. #include <igl/intrinsic_delaunay_triangulation.h>
  3. #include <igl/edge_lengths.h>
  4. #include <igl/triangulated_grid.h>
  5. #include <igl/is_delaunay.h>
  6. TEST(intrinsic_delaunay_triangulation, two_triangles)
  7. {
  8. const Eigen::MatrixXd V =
  9. (Eigen::MatrixXd(4,2)<<
  10. 0,12,
  11. 1,0,
  12. 1,20,
  13. 2,9).finished();
  14. const Eigen::MatrixXi FN =
  15. (Eigen::MatrixXi(2,3)<<
  16. 0,1,2,
  17. 2,1,3).finished();
  18. Eigen::MatrixXd lN;
  19. igl::edge_lengths(V,FN,lN);
  20. Eigen::MatrixXd l;
  21. Eigen::MatrixXi F;
  22. igl::intrinsic_delaunay_triangulation( lN, FN, l, F);
  23. Eigen::MatrixXd lext;
  24. igl::edge_lengths(V,F,lext);
  25. test_common::assert_near(l,lext,1e-10);
  26. }
  27. TEST(intrinsic_delaunay_triangulation, skewed_grid)
  28. {
  29. Eigen::MatrixXd V;
  30. Eigen::MatrixXi F_in;
  31. igl::triangulated_grid(4,4,V,F_in);
  32. // Skew
  33. V.col(0) += 1.1*V.col(1);
  34. Eigen::MatrixXd l_in;
  35. igl::edge_lengths(V,F_in,l_in);
  36. Eigen::MatrixXd l;
  37. Eigen::MatrixXi F;
  38. igl::intrinsic_delaunay_triangulation( l_in, F_in, l, F);
  39. Eigen::MatrixXd lext;
  40. igl::edge_lengths(V,F,lext);
  41. test_common::assert_near(l,lext,1e-10);
  42. Eigen::Matrix<bool,Eigen::Dynamic,3> D;
  43. igl::is_delaunay(V,F,D);
  44. const Eigen::Matrix<bool,Eigen::Dynamic,3> Dtrue =
  45. Eigen::Matrix<bool,Eigen::Dynamic,3>::Constant(F.rows(),F.cols(),true);
  46. test_common::assert_eq(D,Dtrue);
  47. }