我有一组描述一个近似球体形状表面的点集合,需要一种方法来确定其它给定的点是否在这个形状内部。之前我一直将该形状近似为精确的球体,但是这已经被证明不够准确,我需要更准确的方法。简单和速度比完全准确更可取,一个好的近似就足够了。
我找到了一些将点云转换为3d网格的技术,但大多数都非常复杂,我正在寻找尽可能简单的东西。
有什么想法吗?
我有一组描述一个近似球体形状表面的点集合,需要一种方法来确定其它给定的点是否在这个形状内部。之前我一直将该形状近似为精确的球体,但是这已经被证明不够准确,我需要更准确的方法。简单和速度比完全准确更可取,一个好的近似就足够了。
我找到了一些将点云转换为3d网格的技术,但大多数都非常复杂,我正在寻找尽可能简单的东西。
有什么想法吗?
如果您计算云的质心,并将其坐标转换为以该质心为原点的极坐标系统。
然后,将要检查的点转换为相同的坐标系。
假设表面可以用Delaunay三角形表示,则确定与您正在检查的点的角度差最小的三个点。
将要检查的点投影到由这三个点确定的三角形上,并查看从质心到投影点的距离是否大于实际点的距离。
实质上,您正在一次需要一个三角形地构建凸包的三角形网格。如果执行速度真的很重要,您可以在执行过程中缓存生成的三角形。
Steven Sudit还提出了有用的优化建议,如果您选择这条路线,我建议你采纳。
http://en.wikipedia.org/wiki/Kd-tree
文章提供了很好的解释。