1#ifndef IGL_FAST_WINDING_NUMBER
2#define IGL_FAST_WINDING_NUMBER
4#include "FastWindingNumberForSoups.h"
45 const Eigen::MatrixBase<DerivedP>& P,
46 const Eigen::MatrixBase<DerivedN>& N,
47 const Eigen::MatrixBase<DerivedA>& A,
48 const std::vector<std::vector<Index> > & point_indices,
49 const Eigen::MatrixBase<DerivedCH>& CH,
50 const int expansion_order,
51 Eigen::PlainObjectBase<DerivedCM>& CM,
52 Eigen::PlainObjectBase<DerivedR>& R,
53 Eigen::PlainObjectBase<DerivedEC>& EC);
89 const Eigen::MatrixBase<DerivedP>& P,
90 const Eigen::MatrixBase<DerivedN>& N,
91 const Eigen::MatrixBase<DerivedA>& A,
92 const std::vector<std::vector<Index> > & point_indices,
93 const Eigen::MatrixBase<DerivedCH>& CH,
94 const Eigen::MatrixBase<DerivedCM>& CM,
95 const Eigen::MatrixBase<DerivedR>& R,
96 const Eigen::MatrixBase<DerivedEC>& EC,
97 const Eigen::MatrixBase<DerivedQ>& Q,
99 Eigen::PlainObjectBase<DerivedWN>& WN);
112 const Eigen::MatrixBase<DerivedP>& P,
113 const Eigen::MatrixBase<DerivedN>& N,
114 const Eigen::MatrixBase<DerivedA>& A,
115 const Eigen::MatrixBase<DerivedQ>& Q,
116 const int expansion_order,
118 Eigen::PlainObjectBase<DerivedWN>& WN);
127 const Eigen::MatrixBase<DerivedP>& P,
128 const Eigen::MatrixBase<DerivedN>& N,
129 const Eigen::MatrixBase<DerivedA>& A,
130 const Eigen::MatrixBase<DerivedQ>& Q,
131 Eigen::PlainObjectBase<DerivedWN>& WN);
133 namespace FastWindingNumber {
135 namespace HDK_Sample{
137 template <
typename T1,
typename T2>
class UT_SolidAngle;} }
140 struct FastWindingNumberBVH {
142 FastWindingNumber::HDK_Sample::UT_SolidAngle<float,float> ut_solid_angle;
145 std::vector<FastWindingNumber::HDK_Sample::UT_Vector3T<float> > U;
161 const Eigen::MatrixBase<DerivedV> & V,
162 const Eigen::MatrixBase<DerivedF> & F,
163 const Eigen::MatrixBase<DerivedQ> & Q,
164 Eigen::PlainObjectBase<DerivedW> & W);
177 const Eigen::MatrixBase<DerivedV> & V,
178 const Eigen::MatrixBase<DerivedF> & F,
180 FastWindingNumberBVH & fwn_bvh);
192 const FastWindingNumberBVH & fwn_bvh,
193 const float accuracy_scale,
194 const Eigen::MatrixBase<DerivedQ> & Q,
195 Eigen::PlainObjectBase<DerivedW> & W);
202 template <
typename Derivedp>
204 const FastWindingNumberBVH & fwn_bvh,
205 const float accuracy_scale,
206 const Eigen::MatrixBase<Derivedp> & p);
208#ifndef IGL_STATIC_LIBRARY
209# include "fast_winding_number.cpp"
#define IGL_INLINE
Definition igl_inline.h:15
void fast_winding_number(const Eigen::MatrixBase< DerivedP > &P, const Eigen::MatrixBase< DerivedN > &N, const Eigen::MatrixBase< DerivedA > &A, const std::vector< std::vector< Index > > &point_indices, const Eigen::MatrixBase< DerivedCH > &CH, const int expansion_order, Eigen::PlainObjectBase< DerivedCM > &CM, Eigen::PlainObjectBase< DerivedR > &R, Eigen::PlainObjectBase< DerivedEC > &EC)
Generate the precomputation for the fast winding number for point data [Barill et.