我有一组三角形,我想找到最接近空间任意点的三角形。
蛮力方法对我来说太慢了,所以我正在研究各种可以帮助加速搜索的数据结构。
我的问题是我所研究的结构(rtree,kdtree)使用边界框来缩小搜索范围,但是在很多情况下,最近的边界框不一定与最近的三角形相对应。
以下是一个这样的案例:
注意蓝点如何最接近大边界框,但更接近小绿色三角形。这让我觉得依赖于边界框的数据结构会导致不正确的搜索结果...除非我遗漏了一些明显的东西?
总的来说,我正在寻找一个轻量级的c ++解决方案(所以没有CGAL或其他野兽包),或者只是指向我应该研究的正确算法。
谢谢!
答案 0 :(得分:2)
您可以使用边界框方法缩小搜索范围。您需要做的就是以下内容:
答案 1 :(得分:0)
我认为你可以使用Binary Space Partitioning来处理你所描述的更有效的尴尬案例。
基本上你有一些类似于k-d树的东西,你可以在任意平面上分割(通常基于场景中现有的一条边),而不是使用轴对齐的分割。
缺点是构建树的速度可能会慢一些。