Alec Jacobson 6 жил өмнө
parent
commit
0e04d631b1

+ 36 - 52
tests/include/igl/intrinsic_delaunay_triangulation.cpp

@@ -29,7 +29,6 @@ TEST(intrinsic_delaunay_triangulation, two_triangles)
   Eigen::MatrixXd lext;
   igl::edge_lengths(V,F,lext);
   test_common::assert_near(l,lext,1e-10);
-
 }
 
 TEST(intrinsic_delaunay_triangulation, skewed_grid)
@@ -58,7 +57,7 @@ TEST(intrinsic_delaunay_triangulation, peaks)
 {
   Eigen::MatrixXd V2;
   Eigen::MatrixXi F_in;
-  igl::triangulated_grid(6,6,V2,F_in);
+  igl::triangulated_grid(20,20,V2,F_in);
   Eigen::MatrixXd V(V2.rows(),3);
   for(int v=0;v<V.rows();v++)
   {
@@ -79,61 +78,46 @@ TEST(intrinsic_delaunay_triangulation, peaks)
   Eigen::MatrixXi E,uE;
   Eigen::VectorXi EMAP;
   std::vector<std::vector<int> > uE2E;
-  igl::intrinsic_delaunay_triangulation( 
-    l_in, F_in, l, F, E, uE, EMAP, uE2E);
-  //Eigen::MatrixXd lext;
-  //igl::edge_lengths(V,F,lext);
-  //std::cout<<igl::matlab_format(V,"V")<<std::endl;
-  //std::cout<<igl::matlab_format(F_in.array()+1,"F_in")<<std::endl;
-  //std::cout<<igl::matlab_format(F.array()+1,"F")<<std::endl;
-  //std::cout<<igl::matlab_format(l,"l")<<std::endl;
+  igl::intrinsic_delaunay_triangulation(l_in,F_in,l,F,E,uE,EMAP,uE2E);
   Eigen::Matrix<bool,Eigen::Dynamic,3> D;
   const Eigen::Matrix<bool,Eigen::Dynamic,3> D_gt = 
     Eigen::Matrix<bool,Eigen::Dynamic,3>::Constant(F.rows(),F.cols(),true);
   igl::is_intrinsic_delaunay(l,F,uE2E,D);
   test_common::assert_eq(D,D_gt);
+}
 
-  //{
-  //  Eigen::MatrixXi Fu;
-  //  Eigen::VectorXi IA,IC;
-  //  igl::unique_simplices(F,Fu,IA,IC);
-  //  ASSERT_EQ(F.rows(),Fu.rows());
-  //}
-  // Input better have started manifold, otherwise this test doesn't make sense
-  //assert(igl::is_edge_manifold(F_in));
-  //ASSERT_TRUE(igl::is_edge_manifold(F));
+TEST(intrinsic_delaunay_triangulation,tet)
+{
+  const Eigen::MatrixXd V = (Eigen::MatrixXd(4,3)<<
+    10, 4,7,
+     5, 9,0,
+     8, 8,8,
+     1,10,9).finished();
+  const Eigen::MatrixXi F_in = (Eigen::MatrixXi(4,3)<<
+     0,1,2,
+     0,2,3,
+     0,3,1,
+     1,3,2).finished();
+  const Eigen::Matrix<bool,Eigen::Dynamic,3> D_before = 
+    (Eigen::Matrix<bool,Eigen::Dynamic,3>(4,3)<<
+     1,1,1,
+     1,0,1,
+     1,1,0,
+     1,1,1).finished();
+  Eigen::Matrix<bool,Eigen::Dynamic,3> 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,D_before);
+  Eigen::MatrixXd l;
+  Eigen::MatrixXi F;
+  Eigen::MatrixXi E,uE;
+  Eigen::VectorXi EMAP;
+  std::vector<std::vector<int> > uE2E;
+  igl::intrinsic_delaunay_triangulation(l_in,F_in,l,F,E,uE,EMAP,uE2E);
 
+  const Eigen::Matrix<bool,Eigen::Dynamic,3> D_after = 
+    Eigen::Matrix<bool,Eigen::Dynamic,3>::Constant(F.rows(),F.cols(),true);
+  igl::is_intrinsic_delaunay(l,F,uE2E,D);
+  test_common::assert_eq(D,D_after);
 }
-
-//// Not sure if this is a good test... Even though the edge will exist twice
-//the intrinsic triangles on either edge are different...
-//TEST(intrinsic_delaunay_triangulation,unflippable_tet)
-//{
-//  const Eigen::MatrixXd V = (Eigen::MatrixXd(4,3)<<
-//    10, 4,7,
-//     5, 9,0,
-//     8, 8,8,
-//     1,10,9).finished();
-//  const Eigen::MatrixXi F_in = (Eigen::MatrixXi(4,3)<<
-//     0,1,2,
-//     0,2,3,
-//     0,3,1,
-//     1,3,2).finished();
-//  const Eigen::Matrix<bool,Eigen::Dynamic,3> Dgt = 
-//    (Eigen::Matrix<bool,Eigen::Dynamic,3>(4,3)<<
-//     1,1,1,
-//     1,0,1,
-//     1,1,0,
-//     1,1,1).finished();
-//  Eigen::Matrix<bool,Eigen::Dynamic,3> 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);
-//}