#include "fast_winding_number.h" #include "../../fast_winding_number.h" #include "../../octree.h" #include "../../knn.h" #include "../../parallel_for.h" #include "point_areas.h" #include template < typename DerivedP, typename DerivedN, typename DerivedQ, typename BetaType, typename DerivedWN> IGL_INLINE void igl::copyleft::cgal::fast_winding_number( const Eigen::MatrixBase& P, const Eigen::MatrixBase& N, const Eigen::MatrixBase& Q, const int expansion_order, const BetaType beta, Eigen::PlainObjectBase& WN) { typedef typename DerivedWN::Scalar real; std::vector > point_indices; Eigen::Matrix CH; Eigen::Matrix CN; Eigen::Matrix W; Eigen::MatrixXi I; Eigen::Matrix A; octree(P,point_indices,CH,CN,W); knn(P,21,point_indices,CH,CN,W,I); point_areas(P,I,N,A); Eigen::Matrix EC; Eigen::Matrix CM; Eigen::Matrix R; igl::fast_winding_number( P,N,A,point_indices,CH,expansion_order,CM,R,EC); igl::fast_winding_number( P,N,A,point_indices,CH,CM,R,EC,Q,beta,WN); } template < typename DerivedP, typename DerivedN, typename DerivedQ, typename DerivedWN> IGL_INLINE void igl::copyleft::cgal::fast_winding_number( const Eigen::MatrixBase& P, const Eigen::MatrixBase& N, const Eigen::MatrixBase& Q, Eigen::PlainObjectBase& WN) { fast_winding_number(P,N,Q,2,2.0,WN); } #ifdef IGL_STATIC_LIBRARY // Explicit template instantiation template void igl::copyleft::cgal::fast_winding_number, Eigen::Matrix, Eigen::Matrix, double, Eigen::Matrix >(Eigen::MatrixBase > const&, Eigen::MatrixBase > const&, Eigen::MatrixBase > const&, int, double, Eigen::PlainObjectBase >&); #endif