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

remove unneeded V input

Former-commit-id: 58c827824811fb883ea7cb39e8a2b1875a041ed6
Alec Jacobson 6 жил өмнө
parent
commit
0f3f1dfaae

+ 7 - 11
include/igl/average_onto_faces.cpp

@@ -7,22 +7,18 @@
 // obtain one at http://mozilla.org/MPL/2.0/.
 #include "average_onto_faces.h"
 
-template <typename T, typename I>
-IGL_INLINE void igl::average_onto_faces(const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> &V,
-            const Eigen::Matrix<I, Eigen::Dynamic, Eigen::Dynamic> &F,
-            const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> &S,
-            Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> &SF)
+template <typename DerivedF, typename DerivedS, typename DerivedSF>
+IGL_INLINE void average_onto_faces(
+  const Eigen::MatrixBase<DerivedF> & F,
+  const Eigen::MatrixBase<DerivedS> & S,
+  Eigen::PlainObjectBase<DerivedSF> & SF)
 {
-  
-  SF = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>::Zero(F.rows(),S.cols());
-
+  SF.setConstant(F.rows(),S.cols(),0);
   for (int i = 0; i <F.rows(); ++i)
     for (int j = 0; j<F.cols(); ++j)
       SF.row(i) += S.row(F(i,j));
-
   SF.array() /= F.cols();
-  
-};
+}
 
 #ifdef IGL_STATIC_LIBRARY
 // Explicit template instantiation

+ 7 - 9
include/igl/average_onto_faces.h

@@ -16,17 +16,15 @@ namespace igl
   // Move a scalar field defined on faces to vertices by averaging
   //
   // Input:
-  // V,F: mesh
-  // S: scalar field defined on vertices, Vx1
-  // 
+  //   F  #F by ss list of simples/faces
+  //   S  #V by dim list of per-vertex values
   // Output:
-  // SV: scalar field defined on faces
-  template <typename T, typename I>
+  //   SF  #F by dim list of per-face values
+  template <typename DerivedF, typename DerivedS, typename DerivedSF>
   IGL_INLINE void average_onto_faces(
-    const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> &V,
-    const Eigen::Matrix<I, Eigen::Dynamic, Eigen::Dynamic> &F,
-    const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> &S,
-    Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> &SF);
+    const Eigen::MatrixBase<DerivedF> & F,
+    const Eigen::MatrixBase<DerivedS> & S,
+    Eigen::PlainObjectBase<DerivedSF> & SF);
 }
 
 #ifndef IGL_STATIC_LIBRARY