【发布时间】:2010-12-03 20:55:37
【问题描述】:
世界由许多 (1k-10k) 大小相似的矩形组成,我需要能够在尝试添加新矩形时快速确定潜在的重叠。矩形将被动态添加和删除。 R-Trees在这里合适吗?如果是这样,我应该考虑哪些好的图书馆? (我愿意接受任何语言的建议)。
【问题讨论】:
标签: algorithm data-structures geometry
世界由许多 (1k-10k) 大小相似的矩形组成,我需要能够在尝试添加新矩形时快速确定潜在的重叠。矩形将被动态添加和删除。 R-Trees在这里合适吗?如果是这样,我应该考虑哪些好的图书馆? (我愿意接受任何语言的建议)。
【问题讨论】:
标签: algorithm data-structures geometry
您也可以查看kd-trees。
我不知道任何实现,但至少在 3D 中,它们通常被认为比八叉树性能更高。比如这里是经验回报I just googled it。
如果您遇到性能问题,您可能需要考虑替代四叉树。
但是应该注意的是,kd-trees 很难重新平衡...
【讨论】:
R-Trees 是合适的,是的。
quad trees 也是一个很好的数据结构,可以快速找到二维空间区域中的对象。它们实际上是 r-tree 的更统一版本。使用这些结构,即使有大量数据集,您也可以通过很少的测试快速将零点归零。
有一个c#实现here,虽然我没看过。
这种数据结构(它的 3D 版本称为Octrees)经常在游戏中用于管理需要知道它们是否靠近任何其他对象以进行碰撞测试的大型对象数据集,以及各种其他有趣的原因。
你应该可以在游戏行业网站上找到很多这类数据结构的文章和示例,例如gamasutra 和opengl.org
【讨论】: