在三角形表面上有一个点,我怎样才能找到包含该点的三角形?

时间:2014-03-18 07:45:28

标签: algorithm search geometry point

我们有一个三维三角形表面,它有一个点。如何找到包含该点的三角形。 我们可以通过测试所有三角形找到它,但它很慢。我必须让算法更快。

是否有任何搜索算法或是否有任何减少搜索区域的技术?

3 个答案:

答案 0 :(得分:2)

您需要的是spatial data structure,它们允许computational geometry的典型查询。您的点是三角形集的查询点。

例如,您可以为每个三角形计算minimal bounding box并将其存储到R-tree中(保留一个mbb用于哪个三角形的地图,或将这些三角形作为保留节点放在R树中)然后快速查找最佳边界框应该给你可能不是最终结果,但我认为它会提供一个大大减少的搜索区域(一个匹配的mbbs列表,导致一个三角形候选列表),然后你快速搜索确切的三角形(因为边界框和三角形略有不同)。

答案 1 :(得分:0)

您可以使用每个三角形的边界框来测试点是否,从而加快比较速度。

答案 2 :(得分:0)

使用'绑定球体碰撞检测'算法测试所有三角形。

此算法速度快,但有误报。在满足边界球测试的所有三角形上,使用您的算法进行最终碰撞测试。