|
@@ -345,8 +345,12 @@ IGL_INLINE void igl::PolyVectorFieldFinder<DerivedV, DerivedF>::getGeneralCoeffC
|
|
|
Ck.resize(numConstrained,1);
|
|
|
int n = cfW.cols()/3;
|
|
|
|
|
|
- std::vector<std::vector<int> > allCombs;
|
|
|
- igl::nchoosek(0,k+1,n,allCombs);
|
|
|
+ Eigen::MatrixXi allCombs;
|
|
|
+ {
|
|
|
+ Eigen::VectorXi V = Eigen::VectorXi::LinSpaced(n,0,n-1);
|
|
|
+ igl::nchoosek(V,k+1,allCombs);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
int ind = 0;
|
|
|
for (int fi = 0; fi <numF; ++fi)
|
|
@@ -357,13 +361,13 @@ IGL_INLINE void igl::PolyVectorFieldFinder<DerivedV, DerivedF>::getGeneralCoeffC
|
|
|
{
|
|
|
std::complex<typename DerivedV::Scalar> ck(0);
|
|
|
|
|
|
- for (int j = 0; j < allCombs.size(); ++j)
|
|
|
+ for (int j = 0; j < allCombs.rows(); ++j)
|
|
|
{
|
|
|
std::complex<typename DerivedV::Scalar> tk(1.);
|
|
|
//collect products
|
|
|
- for (int i = 0; i < allCombs[j].size(); ++i)
|
|
|
+ for (int i = 0; i < allCombs.cols(); ++i)
|
|
|
{
|
|
|
- int index = allCombs[j][i];
|
|
|
+ int index = allCombs(j,i);
|
|
|
|
|
|
const Eigen::Matrix<typename DerivedV::Scalar, 1, 3> &w = cfW.block(fi,3*index,1,3);
|
|
|
typename DerivedV::Scalar w0 = w.dot(b1);
|