瀏覽代碼

[BUG FIX] empty inputs base case fixed

Former-commit-id: fdddfa3edc35ecca02c10ba0bc983f9f4a9e6f38
Alec Jacobson 7 年之前
父節點
當前提交
fbde23264e
共有 1 個文件被更改,包括 4 次插入18 次删除
  1. 4 18
      include/igl/setdiff.cpp

+ 4 - 18
include/igl/setdiff.cpp

@@ -29,22 +29,7 @@ IGL_INLINE void igl::setdiff(
   {
     C.resize(0,1);
     IA.resize(0,1);
-  }
-  if(B.size() == 0)
-  {
-    C.resize(A.size(),1);
-    int k = 0;
-    for(int j = 0;j<A.cols();j++)
-    {
-      for(int i = 0;i<A.rows();i++)
-      {
-        C(k++) = A(i,j);
-      }
-    }
-    assert(k == C.size());
-    // Have to use << instead of = because Eigen's PlainObjectBase is annoying
-    IA << igl::LinSpaced<Eigen::Matrix<typename DerivedIA::Scalar,Eigen::Dynamic,1> >(
-      C.size(),0,C.size()-1);
+    return;
   }
 
   // Get rid of any duplicates
@@ -69,14 +54,15 @@ IGL_INLINE void igl::setdiff(
   int bi = 0;
   // loop over sA
   bool past = false;
+  bool sBempty = sB.size()==0;
   for(int a = 0;a<sA.size();a++)
   {
-    while(!past && sA(a)>sB(bi))
+    while(!sBempty && !past && sA(a)>sB(bi))
     {
       bi++;
       past = bi>=sB.size();
     }
-    if(past || sA(a)<sB(bi))
+    if(sBempty || past || sA(a)<sB(bi))
     {
       // then sA(a) did not appear in sB
       vC.push_back(sA(a));