#include "intersect_with_half_space.h" #include "mesh_boolean.h" #include "half_space_box.h" template < typename DerivedV, typename DerivedF, typename Derivedp, typename Derivedn, typename DerivedVC, typename DerivedFC, typename DerivedJ> IGL_INLINE bool igl::copyleft::cgal::intersect_with_half_space( const Eigen::PlainObjectBase & V, const Eigen::PlainObjectBase & F, const Eigen::PlainObjectBase & p, const Eigen::PlainObjectBase & n, Eigen::PlainObjectBase & VC, Eigen::PlainObjectBase & FC, Eigen::PlainObjectBase & J) { Eigen::Matrix BV; Eigen::Matrix BF; half_space_box(p,n,V,BV,BF); // Disturbingly, (BV,BF) must be first argument return mesh_boolean(BV,BF,V,F,MESH_BOOLEAN_TYPE_INTERSECT,VC,FC,J); } template < typename DerivedV, typename DerivedF, typename Derivedequ, typename DerivedVC, typename DerivedFC, typename DerivedJ> IGL_INLINE bool igl::copyleft::cgal::intersect_with_half_space( const Eigen::PlainObjectBase & V, const Eigen::PlainObjectBase & F, const Eigen::PlainObjectBase & equ, Eigen::PlainObjectBase & VC, Eigen::PlainObjectBase & FC, Eigen::PlainObjectBase & J) { Eigen::Matrix BV; Eigen::Matrix BF; half_space_box(equ,V,BV,BF); // Disturbingly, (BV,BF) must be first argument return mesh_boolean(BV,BF,V,F,MESH_BOOLEAN_TYPE_INTERSECT,VC,FC,J); } #ifdef IGL_STATIC_LIBRARY // Explicit template specialization template bool igl::copyleft::cgal::intersect_with_half_space, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&, Eigen::PlainObjectBase >&); #endif