我有一个程序,我在其中查询包含在半径为 R 的球体 S 中的所有点。这些点是实际对齐在 3D 规则网格的顶点上的 3D 点,但我认为这个细节与问题无关。查找体积(球体)的中心可以是 3D 速度中的任何位置。
这些点包含一些数据(比如真实的)。我的问题是,如何使用 3D 过滤器(例如高斯过滤器)对包含在球体中的点保存的数据进行插值/过滤。我的理解是你需要做这样的事情(伪代码):
interp_data = 0;
for (each point contained in the lookup sphere S of radius R)
// compute square distance from point location to sphere centre
dist2 = distance2(sphere_center, curr_point_loc);
// compute gaussian weight
w = exp(-100 * dist2);
sumWeight += w;
interp_data += curr_point_data * w;
interp_data /= sumWeight;
这是对的吗。我见过一些使用类似技术的代码。我理解 exp 函数的值 100 与似乎所谓的标准正态偏差有某种关系。我看到的源代码中的值 100 是硬编码的,但我认为这应该以某种方式与球体的半径有关?因为当 dist2 = R^2 时,高斯滤波器的权重应该下降到 0。
如果有人可以对此有所了解,那就太好了。
它实际上是过滤 3D 数据的最佳方式吗?有没有更好/更快/更可靠的方法?
非常感谢你的帮助。