我们有一个三维三角形表面,它有一个点。如何找到包含该点的三角形。 我们可以通过测试所有三角形找到它,但它很慢。我必须让算法更快。
是否有任何搜索算法或是否有任何减少搜索区域的技术?
答案 0 :(得分:2)
您需要的是spatial data structure,它们允许computational geometry的典型查询。您的点是三角形集的查询点。
例如,您可以为每个三角形计算minimal bounding box并将其存储到R-tree中(保留一个mbb用于哪个三角形的地图,或将这些三角形作为保留节点放在R树中)然后快速查找最佳边界框应该给你可能不是最终结果,但我认为它会提供一个大大减少的搜索区域(一个匹配的mbbs列表,导致一个三角形候选列表),然后你快速搜索确切的三角形(因为边界框和三角形略有不同)。
答案 1 :(得分:0)
您可以使用每个三角形的边界框来测试点是否不,从而加快比较速度。
答案 2 :(得分:0)
使用'绑定球体碰撞检测'算法测试所有三角形。
此算法速度快,但有误报。在满足边界球测试的所有三角形上,使用您的算法进行最终碰撞测试。