#include "peel_outer_hull_layers.h" #include "per_face_normals.h" #include "outer_hull.h" #include #include //#define IGL_PEEL_OUTER_HULL_LAYERS_DEBUG #ifdef IGL_PEEL_OUTER_HULL_LAYERS_DEBUG #include "writePLY.h" #include "writeDMAT.h" #include "STR.h" #endif using namespace std; template < typename DerivedV, typename DerivedF, typename DerivedN, typename Derivedodd, typename Derivedflip> IGL_INLINE size_t igl::peel_outer_hull_layers( const Eigen::PlainObjectBase & V, const Eigen::PlainObjectBase & F, const Eigen::PlainObjectBase & N, Eigen::PlainObjectBase & odd, Eigen::PlainObjectBase & flip) { using namespace Eigen; using namespace std; typedef typename DerivedF::Index Index; typedef Matrix MatrixXF; typedef Matrix MatrixXN; typedef Matrix MatrixXI; typedef Matrix MatrixXflip; const Index m = F.rows(); #ifdef IGL_PEEL_OUTER_HULL_LAYERS_DEBUG cout<<"peel outer hull layers..."< 0) { assert(Fr.rows() == IM.rows()); // Compute outer hull of current Fr MatrixXF Fo; MatrixXI Jo; MatrixXflip flipr; #ifdef IGL_PEEL_OUTER_HULL_LAYERS_DEBUG cout<<"calling outer hull..."< in_outer(Fr.rows(),false); for(Index g = 0;g IGL_INLINE size_t igl::peel_outer_hull_layers( const Eigen::PlainObjectBase & V, const Eigen::PlainObjectBase & F, Eigen::PlainObjectBase & odd, Eigen::PlainObjectBase & flip) { Eigen::Matrix N; per_face_normals(V,F,N); return peel_outer_hull_layers(V,F,N,odd,flip); } #ifdef IGL_STATIC_LIBRARY // Explicit template specialization template size_t igl::peel_outer_hull_layers, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&); template size_t igl::peel_outer_hull_layers, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&); #endif