Эх сурвалжийг харах

use matrix assign

Former-commit-id: 06e0960472f285d0ba54adc6f126f09542af6832
Alec Jacobson 8 жил өмнө
parent
commit
a8f2396c64

+ 6 - 7
include/igl/copyleft/cgal/component_inside_component.cpp

@@ -7,19 +7,18 @@
 // obtain one at http://mozilla.org/MPL/2.0/.
 #include "component_inside_component.h"
 
-#include <cassert>
-#include <list>
-#include <limits>
-#include <vector>
+#include "order_facets_around_edge.h"
+#include "points_inside_component.h"
 
 #include <CGAL/AABB_tree.h>
 #include <CGAL/AABB_traits.h>
 #include <CGAL/AABB_triangle_primitive.h>
 #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
 
-#include "order_facets_around_edge.h"
-#include "assign_scalar.h"
-#include "points_inside_component.h"
+#include <cassert>
+#include <list>
+#include <limits>
+#include <vector>
 
 template <typename DerivedV, typename DerivedF, typename DerivedI>
 IGL_INLINE bool igl::copyleft::cgal::component_inside_component(

+ 3 - 9
include/igl/copyleft/cgal/mesh_boolean.cpp

@@ -8,7 +8,7 @@
 // obtain one at http://mozilla.org/MPL/2.0/.
 //
 #include "mesh_boolean.h"
-#include "assign_scalar.h"
+#include "assign.h"
 #include "extract_cells.h"
 #include "mesh_boolean_type_to_funcs.h"
 #include "propagate_winding_numbers.h"
@@ -393,14 +393,8 @@ IGL_INLINE bool igl::copyleft::cgal::mesh_boolean(
     }
 #endif
 
-    MatrixX3S Vs(V.rows(), V.cols());
-    for (size_t i=0; i<(size_t)V.rows(); i++)
-    {
-      for (size_t j=0; j<(size_t)V.cols(); j++)
-      {
-        igl::copyleft::cgal::assign_scalar(V(i,j), Vs(i,j));
-      }
-    }
+    MatrixX3S Vs;
+    assign(V,Vs);
     Eigen::VectorXi newIM;
     igl::remove_unreferenced(Vs,G,VC,FC,newIM);
   }

+ 2 - 9
include/igl/copyleft/cgal/mesh_to_cgal_triangle_list.cpp

@@ -6,7 +6,7 @@
 // v. 2.0. If a copy of the MPL was not distributed with this file, You can 
 // obtain one at http://mozilla.org/MPL/2.0/.
 #include "mesh_to_cgal_triangle_list.h"
-#include "assign_scalar.h"
+#include "assign.h"
 
 #include <cassert>
 
@@ -30,14 +30,7 @@ IGL_INLINE void igl::copyleft::cgal::mesh_to_cgal_triangle_list(
     DerivedV::RowsAtCompileTime,
     DerivedV::ColsAtCompileTime> 
     KV(V.rows(),V.cols());
-  // Just use f'ing for loops. What if V and KV don't use same ordering?
-  for(int i = 0;i<V.rows();i++)
-  {
-    for(int j = 0;j<V.cols();j++)
-    {
-      assign_scalar(V(i,j),KV(i,j));
-    }
-  }
+  assign(V,KV);
   // Must be triangles
   assert(F.cols() == 3);
   T.reserve(F.rows());

+ 0 - 1
include/igl/copyleft/cgal/minkowski_sum.cpp

@@ -12,7 +12,6 @@
 #include "../../unique.h"
 #include "../../get_seconds.h"
 #include "../../edges.h"
-#include "assign_scalar.h"
 #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
 #include <cassert>
 #include <vector>

+ 3 - 9
include/igl/copyleft/cgal/outer_hull.cpp

@@ -8,7 +8,7 @@
 #include "outer_hull.h"
 #include "extract_cells.h"
 #include "remesh_self_intersections.h"
-#include "assign_scalar.h"
+#include "assign.h"
 #include "../../remove_unreferenced.h"
 
 #include <CGAL/AABB_tree.h>
@@ -94,14 +94,8 @@ IGL_INLINE void igl::copyleft::cgal::outer_hull(
   // Remove unreferenced vertices and re-index faces
   {
     // Cast to output type
-    DerivedHV Vr_cast(Vr.rows(),Vr.cols());
-    for(int i = 0;i<Vr.rows();i++)
-    {
-      for(int j = 0;j<Vr.cols();j++)
-      {
-        assign_scalar(Vr(i,j), Vr_cast(i,j));
-      }
-    }
+    DerivedHV Vr_cast;
+    assign(Vr,Vr_cast);
     Eigen::VectorXi I;
     remove_unreferenced(Vr_cast,DerivedHF(HF),HV,HF,I);
   }

+ 3 - 7
include/igl/copyleft/cgal/propagate_winding_numbers.cpp

@@ -18,7 +18,7 @@
 #include "order_facets_around_edge.h"
 #include "outer_facet.h"
 #include "closest_facet.h"
-#include "assign_scalar.h"
+#include "assign.h"
 #include "extract_cells.h"
 #include "cell_adjacency.h"
 
@@ -147,12 +147,8 @@ IGL_INLINE bool igl::copyleft::cgal::propagate_winding_numbers(
     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<(size_t)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));
-    }
+    Eigen::MatrixXd vertices;
+    assign(V,vertices);
     writePLY(filename, vertices, cell_faces);
   };
 

+ 3 - 7
include/igl/copyleft/cgal/relabel_small_immersed_cells.cpp

@@ -9,7 +9,7 @@
 
 #include "relabel_small_immersed_cells.h"
 #include "../../centroid.h"
-#include "assign_scalar.h"
+#include "assign.h"
 #include "cell_adjacency.h"
 
 #include <vector>
@@ -37,12 +37,8 @@ IGL_INLINE void igl::copyleft::cgal::relabel_small_immersed_cells(
   std::vector<std::set<CellConnection> > cell_adj;
   igl::copyleft::cgal::cell_adjacency(C, num_cells, cell_adj);
 
-  Eigen::MatrixXd VV(V.rows(), V.cols());
-  for (size_t i=0; i<num_vertices; i++) {
-    igl::copyleft::cgal::assign_scalar(V(i,0), VV(i,0));
-    igl::copyleft::cgal::assign_scalar(V(i,1), VV(i,1));
-    igl::copyleft::cgal::assign_scalar(V(i,2), VV(i,2));
-  }
+  Eigen::MatrixXd VV;
+  assign(V,VV);
 
   auto compute_cell_volume = [&](size_t cell_id) {
     std::vector<short> is_involved(num_patches, 0);

+ 0 - 1
include/igl/copyleft/cgal/resolve_intersections.cpp

@@ -10,7 +10,6 @@
 #include "row_to_point.h"
 #include "../../unique.h"
 #include "../../list_to_matrix.h"
-#include "../../copyleft/cgal/assign_scalar.h"
 #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
 #include <CGAL/Segment_2.h>
 #include <CGAL/Point_2.h>

+ 1 - 1
include/igl/copyleft/cgal/subdivide_segments.cpp

@@ -7,9 +7,9 @@
 // obtain one at http://mozilla.org/MPL/2.0/.
 #include "subdivide_segments.h"
 #include "row_to_point.h"
+#include "assign_scalar.h"
 #include "../../unique.h"
 #include "../../list_to_matrix.h"
-#include "../../copyleft/cgal/assign_scalar.h"
 #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
 #include <CGAL/Segment_2.h>
 #include <CGAL/Point_2.h>

+ 1 - 14
include/igl/copyleft/cgal/trim_with_solid.cpp

@@ -6,7 +6,7 @@
 // v. 2.0. If a copy of the MPL was not distributed with this file, You can 
 // obtain one at http://mozilla.org/MPL/2.0/.
 #include "trim_with_solid.h"
-#include "assign_scalar.h"
+#include "assign.h"
 #include "intersect_other.h"
 #include "point_solid_signed_squared_distance.h"
 
@@ -88,19 +88,6 @@ IGL_INLINE void igl::copyleft::cgal::trim_with_solid(
   }
   Eigen::VectorXi _;
   igl::remove_unreferenced(MatrixX3E(V),DerivedF(F),V,F,_);
-  const auto & assign = [](
-    const MatrixX3E & V, 
-    Eigen::PlainObjectBase<DerivedV> & Vd)
-  {
-    Vd.resize(V.rows(),3);
-    for(int v = 0;v<V.rows();v++)
-    {
-      for(int d = 0;d<3;d++) 
-      {
-        igl::copyleft::cgal::assign_scalar(V(v,d),Vd(v,d));
-      }
-    }
-  };
   assign(V,Vd);
 }