// 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 "is_boundary_edge.h" #include "unique_rows.h" #include "sort.h" template < typename DerivedF, typename DerivedE, typename DerivedB> void igl::is_boundary_edge( const Eigen::PlainObjectBase & E, const Eigen::PlainObjectBase & F, Eigen::PlainObjectBase & B) { using namespace Eigen; using namespace std; // Should be triangles assert(F.cols() == 3); // Should be edges assert(E.cols() == 2); // number of faces const int m = F.rows(); // Collect all directed edges after E MatrixXi EallE(E.rows()+3*m,2); EallE.block(0,0,E.rows(),E.cols()) = E; for(int e = 0;e<3;e++) { for(int f = 0;f void igl::is_boundary_edge( const Eigen::PlainObjectBase & F, Eigen::PlainObjectBase & B, Eigen::PlainObjectBase & E, Eigen::PlainObjectBase & EMAP) { using namespace Eigen; using namespace std; // Should be triangles assert(F.cols() == 3); // number of faces const int m = F.rows(); // Collect all directed edges after E MatrixXi allE(3*m,2); for(int e = 0;e<3;e++) { for(int f = 0;f, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&); template void igl::is_boundary_edge, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&); template void igl::is_boundary_edge, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&); template void igl::is_boundary_edge, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&); template void igl::is_boundary_edge, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&); template void igl::is_boundary_edge, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&); #endif