【问题标题】:2D nearest neighbour search for moving points二维最近邻搜索移动点
【发布时间】:2011-10-21 17:23:33
【问题描述】:

我想做一些植绒模拟,如here 所述。

为此,我需要搜索每个 2D 点的最近邻居。但是,我不能使用像 k-d 树这样的静态数据结构,因为点总是在移动......

有什么好的(简单的)数据结构/库可以实现这一点?我正在使用 C++...

【问题讨论】:

标签: c++ data-structures 2d points nearest-neighbor


【解决方案1】:

人们有studied这个问题。在这个领域寻找工作时,重要的关键字是动力学。

【讨论】:

    【解决方案2】:

    也许您想尝试四叉树或空间索引? k-d 树有什么问题?基本上,当边缘有羊群/点时,您可以跳过检查与远处边缘的碰撞。空间索引可以是四叉树、r-tree、kd-tree 或 hilbert r-tree。可以在这里阅读更好的答案:Approximate, incremental nearest-neighbour algorithm for moving bodies

    “也就是说,递归地将“世界”划分为一个图,每个图有四个子节点。然后,树可以快速检查哪些对象位于世界的特定方格内,并丢弃其余对象。一种非常有效的剔除技术,通常用于提高游戏中碰撞检测的性能。”

    【讨论】:

    • k-d 树(或四叉树,就此而言)不是静态的吗?这意味着在所有点都移动之后,您必须在每一步中重建它?
    • 四叉树的思想是将二维复杂度降低到一维复杂度。当您递归遍历树深度优先或广度优先时,填充整棵树变得很简单?
    • 我猜四叉树会起作用,有点。然而,简单地遍历所有邻居似乎对我来说已经足够快了......
    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 2018-02-26
    • 2015-11-16
    • 2012-04-15
    • 1970-01-01
    • 2012-09-16
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多