// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2013 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 "boundary_conditions.h" #include "verbose.h" #include "EPS.h" #include "project_to_line.h" #include #include #include template < typename DerivedV, typename DerivedEle, typename DerivedC, typename DerivedP, typename DerivedBE, typename DerivedCE, typename DerivedCF, typename Derivedb, typename Derivedbc> IGL_INLINE bool igl::boundary_conditions( const Eigen::MatrixBase & V, const Eigen::MatrixBase & Ele, const Eigen::MatrixBase & C, const Eigen::MatrixBase & P, const Eigen::MatrixBase & BE, const Eigen::MatrixBase & CE, const Eigen::MatrixBase & CF, Eigen::PlainObjectBase & b, Eigen::PlainObjectBase & bc) { if(P.size()+BE.rows() == 0) { verbose("^%s: Error: no handles found\n",__FUNCTION__); return false; } std::vector bci; std::vector bcj; std::vector bcv; // loop over points for(int p = 0;p FLOAT_EPS) { verbose("^%s: Error: handle %d does not receive 0 weight\n",__FUNCTION__,i); return false; } if(max_c< (1-FLOAT_EPS)) { verbose("^%s: Error: handle %d does not receive 1 weight\n",__FUNCTION__,i); return false; } } return true; } #ifdef IGL_STATIC_LIBRARY // Explicit template instantiation template bool igl::boundary_conditions, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix>(Eigen::MatrixBase> const&, Eigen::MatrixBase> const&, Eigen::MatrixBase> const&, Eigen::MatrixBase> const&, Eigen::MatrixBase> const&, Eigen::MatrixBase> const&, Eigen::MatrixBase> const&, Eigen::PlainObjectBase>&, Eigen::PlainObjectBase>&); #endif