use*_*490 3 c++ algorithm math 3d
我有一个程序,我在其中查询半径为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;
Run Code Online (Sandbox Code Playgroud)
这是对的吗.我见过一些使用类似技术的代码.我理解exp函数的值100以某种方式与所谓的标准正态偏差有关.值100在我看到的源代码中被硬编码,但我认为这应该以某种方式与球体的半径相关联?当dist2 = R ^ 2时,高斯滤波器的权重应该下降到0.
如果有人能够对此有所了解,那就太好了.
它实际上是过滤3D数据的最佳方式吗?有更好/更快/更可靠的方法吗?
非常感谢你的帮助.