浏览代码

fixed doublearea in massmatrix

Former-commit-id: e7171f848c757e199babf3dd96f2d44e7ddd0c22
Alec Jacobson 10 年之前
父节点
当前提交
15c78cdaa0
共有 1 个文件被更改,包括 3 次插入9 次删除
  1. 3 9
      include/igl/massmatrix.cpp

+ 3 - 9
include/igl/massmatrix.cpp

@@ -8,6 +8,7 @@
 #include "massmatrix.h"
 #include "normalize_row_sums.h"
 #include "sparse.h"
+#include "doublearea.h"
 #include "repmat.h"
 #include <Eigen/Geometry>
 #include <iostream>
@@ -51,15 +52,8 @@ IGL_INLINE void igl::massmatrix(
       l(i,1) = (V.row(F(i,2))-V.row(F(i,0))).norm();
       l(i,2) = (V.row(F(i,0))-V.row(F(i,1))).norm();
     }
-    // semiperimeters
-    Matrix<Scalar,Dynamic,1> s = l.rowwise().sum()*0.5;
-    assert(s.rows() == m);
-    // Heron's forumal for area
-    Matrix<Scalar,Dynamic,1> dblA(m);
-    for(int i = 0;i<m;i++)
-    {
-      dblA(i) = 2.0*sqrt(s(i)*(s(i)-l(i,0))*(s(i)-l(i,1))*(s(i)-l(i,2)));
-    }
+    Matrix<Scalar,Dynamic,1> dblA;
+    doublearea(l,dblA);
 
     switch(eff_type)
     {