#include #include #include #include #include #include #include #include #include TEST(intrinsic_delaunay_triangulation, two_triangles) { const Eigen::MatrixXd V = (Eigen::MatrixXd(4,2)<< 0,12, 1,0, 1,20, 2,9).finished(); const Eigen::MatrixXi FN = (Eigen::MatrixXi(2,3)<< 0,1,2, 2,1,3).finished(); Eigen::MatrixXd lN; igl::edge_lengths(V,FN,lN); Eigen::MatrixXd l; Eigen::MatrixXi F; igl::intrinsic_delaunay_triangulation( lN, FN, l, F); Eigen::MatrixXd lext; igl::edge_lengths(V,F,lext); test_common::assert_near(l,lext,1e-10); } TEST(intrinsic_delaunay_triangulation, skewed_grid) { Eigen::MatrixXd V; Eigen::MatrixXi F_in; igl::triangulated_grid(4,4,V,F_in); // Skew V.col(0) += 1.1*V.col(1); Eigen::MatrixXd l_in; igl::edge_lengths(V,F_in,l_in); Eigen::MatrixXd l; Eigen::MatrixXi F; igl::intrinsic_delaunay_triangulation( l_in, F_in, l, F); Eigen::MatrixXd lext; igl::edge_lengths(V,F,lext); test_common::assert_near(l,lext,1e-10); Eigen::Matrix D; igl::is_delaunay(V,F,D); const Eigen::Matrix Dtrue = Eigen::Matrix::Constant(F.rows(),F.cols(),true); test_common::assert_eq(D,Dtrue); } TEST(intrinsic_delaunay_triangulation, peaks) { Eigen::MatrixXd V2; Eigen::MatrixXi F_in; igl::triangulated_grid(1000,1000,V2,F_in); Eigen::MatrixXd V(V2.rows(),3); for(int v=0;v Dgt = (Eigen::Matrix(4,3)<< 1,1,1, 1,0,1, 1,1,0, 1,1,1).finished(); Eigen::Matrix D; Eigen::MatrixXd l_in; igl::edge_lengths(V,F_in,l_in); igl::is_intrinsic_delaunay(l_in,F_in,D); test_common::assert_eq(D,Dgt); Eigen::MatrixXd l; Eigen::MatrixXi F; igl::intrinsic_delaunay_triangulation( l_in, F_in, l, F); // Nothing should have changed: no edges are flippable. test_common::assert_eq(F,F_in); test_common::assert_eq(l,l_in); }