68 const VectorXd& sourceAmplitudes,
69 const MatrixXd& sourcePositions,
72 int nSources = sourceAmplitudes.size();
73 Vector3d peakPos = sourcePositions.row(peakIndex);
75 double weightedSum = 0.0;
76 double totalWeight = 0.0;
78 for (
int k = 0; k < nSources; ++k) {
79 double absAmp = std::abs(sourceAmplitudes(k));
80 double dist = (sourcePositions.row(k).transpose() - peakPos).norm();
81 weightedSum += dist * absAmp;
82 totalWeight += absAmp;
85 if (totalWeight < 1e-10) {
89 return weightedSum / totalWeight;