Browse Source

Stupid bug fixed.

Former-commit-id: 2526e2ecfb65ce23a6dded0a0bc0dc6213ea55cf
Qingnan Zhou 9 years ago
parent
commit
2fb7f627bf
1 changed files with 28 additions and 21 deletions
  1. 28 21
      include/igl/cgal/propagate_winding_numbers.cpp

+ 28 - 21
include/igl/cgal/propagate_winding_numbers.cpp

@@ -858,31 +858,31 @@ IGL_INLINE void igl::cgal::propagate_winding_numbers_beta(
         cell_adjacency[negative_cell].emplace(positive_cell, true, i);
     }
 
-    {
-        auto save_cell = [&](const std::string& filename, size_t cell_id) {
-            std::vector<size_t> faces;
-            for (size_t i=0; i<num_patches; i++) {
-                if ((per_patch_cells.row(i).array() == cell_id).any()) {
-                    for (size_t j=0; j<num_faces; j++) {
-                        if (P[j] == i) {
-                            faces.push_back(j);
-                        }
+    auto save_cell = [&](const std::string& filename, size_t cell_id) {
+        std::vector<size_t> faces;
+        for (size_t i=0; i<num_patches; i++) {
+            if ((per_patch_cells.row(i).array() == cell_id).any()) {
+                for (size_t j=0; j<num_faces; j++) {
+                    if (P[j] == i) {
+                        faces.push_back(j);
                     }
                 }
             }
-            Eigen::MatrixXi cell_faces(faces.size(), 3);
-            for (size_t i=0; i<faces.size(); i++) {
-                cell_faces.row(i) = F.row(faces[i]);
-            }
-            Eigen::MatrixXd vertices(V.rows(), 3);
-            for (size_t i=0; i<V.rows(); i++) {
-                assign_scalar(V(i,0), vertices(i,0));
-                assign_scalar(V(i,1), vertices(i,1));
-                assign_scalar(V(i,2), vertices(i,2));
-            }
-            writePLY(filename, vertices, cell_faces);
-        };
+        }
+        Eigen::MatrixXi cell_faces(faces.size(), 3);
+        for (size_t i=0; i<faces.size(); i++) {
+            cell_faces.row(i) = F.row(faces[i]);
+        }
+        Eigen::MatrixXd vertices(V.rows(), 3);
+        for (size_t i=0; i<V.rows(); i++) {
+            assign_scalar(V(i,0), vertices(i,0));
+            assign_scalar(V(i,1), vertices(i,1));
+            assign_scalar(V(i,2), vertices(i,2));
+        }
+        writePLY(filename, vertices, cell_faces);
+    };
 
+    {
         // Check for odd cycle.
         Eigen::VectorXi cell_labels(num_cells);
         cell_labels.setZero();
@@ -978,6 +978,7 @@ IGL_INLINE void igl::cgal::propagate_winding_numbers_beta(
                     per_cell_W(neighbor_cell, i) =
                         per_cell_W(curr_cell, i) + inc;
                 }
+                Q.push(neighbor_cell);
             } else {
                 for (size_t i=0; i<num_labels; i++) {
                     if (i == patch_labels[patch_idx]) {
@@ -1003,5 +1004,11 @@ IGL_INLINE void igl::cgal::propagate_winding_numbers_beta(
             W(i,j*2+1) = per_cell_W(negative_cell, j);
         }
     }
+
+    //for (size_t i=0; i<num_cells; i++) {
+    //    std::stringstream filename;
+    //    filename << "cell_" << i << "_w_" << per_cell_W(i, 1) << ".ply";
+    //    save_cell(filename.str(), i);
+    //}
 }