37 const VectorXi& vecIndices,
42 MatrixXd matSpharaOperator = MatrixXd::Identity(iOperatorDim, iOperatorDim);
44 if(matBaseFct.size() == 0) {
45 qWarning()<<
"[UTILSLIB::makeSpharaProjector] Basis function matrix was empty. Returning identity matrix instead.";
46 return matSpharaOperator;
50 MatrixXd matSpharaGradCut = matBaseFct.block(0,0,matBaseFct.rows(),iNBaseFct);
51 MatrixXd matSpharaMultGrad = matSpharaGradCut * matSpharaGradCut.transpose().eval();
57 for(
int i = 0; i<=iSkip; i++) {
58 for(
int r = i; r<vecIndices.rows(); r+=1+iSkip) {
59 for(
int c = i; c<vecIndices.rows(); c+=1+iSkip) {
60 if((r < vecIndices.rows() || c < vecIndices.rows()) && (rowIndex < matSpharaMultGrad.rows() || colIndex < matSpharaMultGrad.cols())) {
61 matSpharaOperator(vecIndices(r),vecIndices(c)) = matSpharaMultGrad(rowIndex,colIndex);
63 qWarning()<<
"UTILSLIB::makeSpharaProjector - Index is out of range. Returning identity matrix.";
65 matSpharaOperator = MatrixXd::Identity(iOperatorDim, iOperatorDim);
66 return matSpharaOperator;
79 return matSpharaOperator;
SPatial HARmonic Analysis (SPHARA) spatial-filter projector assembly.
Shared utilities (I/O helpers, spectral analysis, layout management, warp algorithms).
DSPSHARED_EXPORT Eigen::MatrixXd makeSpharaProjector(const Eigen::MatrixXd &matBaseFct, const Eigen::VectorXi &vecIndices, int iOperatorDim, int iNBaseFct, int iSkip=0)