【发布时间】:2020-05-22 16:23:00
【问题描述】:
假设现在在二维空间中,我们有一个矩形列表a、b、c,如下图所示:
_______
|___a_|
_______
| |
|__b__|
_______
|___c_|
现在我想做的是对于每个矩形,我想找到最近的矩形和最远的矩形。例如,对于矩形 a,其最近的矩形是 b,而其最远的矩形是 c。当然,解决这个问题的一种蛮力方法是为每个矩形计算它到其余矩形的距离。我认为应该有解决这个问题的快速算法。例如,我可以将 2D 空间分成 10×10 个正方形,然后计算矩形在这个空间中的位置。当我计算最近的矩形时,我只搜索相邻正方形中的矩形。还有其他想法吗?谢谢。
编辑: 我承认如果我只对获取最近的矩形感兴趣,使用kd-tree 是一个很好的解决方案。但在这里,我也想知道最远的矩形。我不确定在这种情况下使用 k-d 树是否会有所帮助。
【问题讨论】:
-
构建包含矩形的四叉树。距离搜索就更容易了。
-
@Ripi2 谢谢,你能提供更多细节吗?
-
哪些细节?你懂quadtrees吗?
-
„Hierarchical Representations of Collections of Small Rectangles“ 是 Hanan Samet 的一个很好的教程调查。我建议查找有关 R-Trees page 303 ff 的部分。我的印象是它们可以用来解决您的问题。
标签: algorithm geometry computational-geometry