我如何测试一个点是否在3d形状之内,其表面由点云定义?

我有一个点集合描述一个形状应该是大致球形的表面,我需要一个方法来确定是否有任何其他给定的点在这个形状内.我以前已经将形状近似为一个确切的球体,但是这已经被证明太不准确了,我需要一个更准确的方法.简单性和速度优于完全准确度,很好的近似就足够了.

我遇到了将点云转换为3d网格的技术,但我发现的大多数事情都非常复杂,我正在寻找尽可能简单的东西.

有任何想法吗?

非常感谢,
本.

解决方法

如果您计算云的质心,并将其坐标转换为起点为重心的极坐标系,该怎么办?

然后,将要检查的点转换为相同的坐标系.

假设表面可以通过delaunay三角测量法来表示,确定与您检查点的角度最小的三个点.

将您检查的点投影到由三个点确定的三角形上,并查看投影点距质心的距离是否大于实际点的距离.

基本上,您正在构建凸包的三角形网格,但一次需要一个三角形.如果执行速度真的很重要,您可以随时缓存生成的三角形.

Steven Sudit也建议a useful optimization,如果你走这条路,我建议.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...