3

我正在根据 Guttman 的原始论文编写 R-Tree 的实现。我正在考虑将 R-Tree 用于我正在编写的程序,该程序涉及屏幕上的许多矩形,这些矩形可以用鼠标移动/调整大小。

我只想有效地选择特定矩形中的矩形并绘制它们(而不是遍历可能的 100 多个项目并检查边界是否相交)。在阅读了几篇 Guttman 的论文后,我发现的问题是无法为 2D 对象维护 z 顺序。

例如,如果我移动一个对象,它将被删除然后重新插入。当它重新插入时,它插入的节点将无法跟踪正确的顺序。我见过的大多数 R-Tree 实现都使用数组并找到空位置。重新插入基本上会破坏任何 z 顺序定位。

因此,当我绘制与矩形相交的所有矩形时,它们返回的顺序不一定正确。

我在这个假设上错了吗?我在想而不是使用数组,我可以使用 AVL 或红黑树并使用Comparer在 z-index 上进行比较的 a 插入到树中。这样,z 顺序始终保持不变(这是最重要的因素)。

我也只是想在它们返回时对其进行分类,但我想这可能会更贵。

4

1 回答 1

2

R-tree 不应该以某种方式对答案记录进行排序。

只是排序答案。这不是太慢。

顺便说一句,我可以将我的 r-tree 代码邮寄给您。它对我来说很好用,但如果有人能检查一下 Guttman 或 Beckman 在他们的论文中写的是什么,那将非常有用......

空间索引的顺序与严格的顺序有本质的不同……它是空间索引和 B+-tree 之间的区别。

您还可以有两个索引并加入它们。你真的确定你需要索引吗?有些东西运行缓慢?

于 2010-08-26T18:43:49.200 回答