#include "../../fast_winding_number.h" #include "../../octree.h" #include "../../knn.h" #include "../../parallel_for.h" #include "point_areas.h" #include namespace igl { namespace copyleft{ namespace cgal{ template IGL_INLINE void 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; typedef typename Eigen::Matrix RealMatrix; 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 IGL_INLINE void 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); } } } }