Browse Source

border vertex for quads (#2245) [ci skip]

Alec Jacobson 2 years ago
parent
commit
fb13b11a19
2 changed files with 14 additions and 1 deletions
  1. 1 0
      include/igl/is_border_vertex.cpp
  2. 13 1
      include/igl/is_irregular_vertex.cpp

+ 1 - 0
include/igl/is_border_vertex.cpp

@@ -14,6 +14,7 @@ template <typename DerivedF>
 IGL_INLINE std::vector<bool> igl::is_border_vertex(
   const Eigen::MatrixBase<DerivedF> &F)
 {
+  assert(F.cols() == 3 && "Only triangle meshes are supported");
   Eigen::Matrix<typename DerivedF::Scalar, Eigen::Dynamic, Eigen::Dynamic> FF;
   igl::triangle_triangle_adjacency(F,FF);
   std::vector<bool> ret(F.maxCoeff()+1);

+ 13 - 1
include/igl/is_irregular_vertex.cpp

@@ -27,7 +27,19 @@ IGL_INLINE std::vector<bool> igl::is_irregular_vertex(const Eigen::MatrixBase<De
     }
   }
 
-  std::vector<bool> border = is_border_vertex(F);
+  std::vector<bool> border;
+  if(F.cols() == 3)
+  { 
+    border = is_border_vertex(F);
+  }else
+  {
+    assert(F.cols() == 4 && "Only triangle and quad meshes are supported");
+    // Silly way to find border vertices for now
+    Eigen::Matrix<typename DerivedF::Scalar, Eigen::Dynamic, Eigen::Dynamic> T(2*F.rows(),3);
+    T << F.col(0), F.col(1), F.col(2),
+      F.col(0), F.col(2), F.col(3);
+    border = is_border_vertex(T);
+  }
 
   std::vector<bool> res(count.size());