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

前端之家收集整理的这篇文章主要介绍了我如何测试一个点是否在3d形状之内,其表面由点云定义?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个点集合描述一个形状应该是大致球形的表面,我需要一个方法来确定是否有任何其他给定的点在这个形状内.我以前已经将形状近似为一个确切的球体,但是这已经被证明太不准确了,我需要一个更准确的方法.简单性和速度优于完全准确度,很好的近似就足够了.

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

有任何想法吗?

非常感谢,
本.

解决方法

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

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

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

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

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

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

猜你在找的C&C++相关文章