#include "quad_planarity.h" #include template IGL_INLINE void igl::quad_planarity( const Eigen::PlainObjectBase& V, const Eigen::PlainObjectBase& F, Eigen::PlainObjectBase & P) { int nf = F.rows(); P.setZero(nf,1); for (int i =0; i &v1 = V.row(F(i,0)); const Eigen::Matrix &v2 = V.row(F(i,1)); const Eigen::Matrix &v3 = V.row(F(i,2)); const Eigen::Matrix &v4 = V.row(F(i,3)); Eigen::Matrix diagCross=(v3-v1).cross(v4-v2); typename Eigen::PlainObjectBase::Scalar denom = diagCross.norm()*(((v3-v1).norm()+(v4-v2).norm())/2); if (fabs(denom)<1e-8) //degenerate quad is still planar P[i] = 0; else P[i] = (diagCross.dot(v2-v1)/denom); } } #ifndef IGL_HEADER_ONLY // Explicit template specialization #endif