54 const VectorXd& sourceAmplitudes,
55 const MatrixXd& sourcePositions,
58 int nSources = sourceAmplitudes.size();
59 Vector3d peakPos = sourcePositions.row(peakIndex);
61 double weightedSum = 0.0;
62 double totalWeight = 0.0;
64 for (
int k = 0; k < nSources; ++k) {
65 double absAmp = std::abs(sourceAmplitudes(k));
66 double dist = (sourcePositions.row(k).transpose() - peakPos).norm();
67 weightedSum += dist * absAmp;
68 totalWeight += absAmp;
71 if (totalWeight < 1e-10) {
75 return weightedSum / totalWeight;