Просмотр исходного кода

fixed bug in adjacency_list for open meshes

Former-commit-id: be31eda316517296ca37b418edd824d8ba60b3c4
dpanozzo 13 лет назад
Родитель
Сommit
514e61136a
2 измененных файлов с 21 добавлено и 5 удалено
  1. 9 5
      adjacency_list.h
  2. 12 0
      plot_vector.h

+ 9 - 5
adjacency_list.h

@@ -48,13 +48,17 @@ inline void igl::adjacency_list(
       // Get indices of edge: s --> d
       int s = F(i,j);
       int d = F(i,(j+1)%F.cols());
-      if (s>d)
-      {
-        A[s].push_back(d);
-        A[d].push_back(s);
-      }
+      A[s].push_back(d);
+      A[d].push_back(s);
     }
   }
+  
+  // Remove duplicates
+  for(int i=0; i<A.size();++i)
+  {
+    std::sort(A[i].begin(), A[i].end());
+    A[i].erase(std::unique(A[i].begin(), A[i].end()), A[i].end());
+  }
 }
 
 #endif

+ 12 - 0
plot_vector.h

@@ -10,6 +10,18 @@ namespace igl
       cerr << v[i] << " ";
     cerr << endl;
   }
+
+  template <typename T>
+  inline void plot_vector( vector< vector<T> >& v)
+  {
+    for (int i=0; i<v.size(); ++i)
+    {
+      for (int j=0; j<v[i].size(); ++j)
+        cerr << v[i][j] << " ";
+      cerr << endl;
+    }
+  }
+
 }
 
 #endif