// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2015 Alec Jacobson // // This Source Code Form is subject to the terms of the Mozilla Public License // 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 "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