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)