【问题标题】:Finding the nearest neighboring edge in a Quadtree在四叉树中找到最近的相邻边
【发布时间】:2015-04-06 12:22:57
【问题描述】:

我在四叉树中存储了一组点。使用这些点创建四叉树后,我会将所有边添加到四叉树中,这样每条边都会存储在它所交叉、开始或结束的所有叶节点中。

现在,我有一个点,比如说 A,我需要找到最接近它的边。在我当前的算法中,我递归到包含此点 A 的叶节点,并找到 A 与此叶节点包含的所有线段 之间的距离。 现在这可能看起来是正确的解决方案,但并不是因为我必须比较相邻节点中的边才能给出准确的答案。

现在我的问题是

a)如何提取最近的边缘?

b)我应该只比较父节点(到兴趣点)中包含的所有边吗? (但我知道,根据直觉,对必须向上找到最近边缘的层数进行硬性限制是不正确的)

【问题讨论】:

    标签: algorithm graph quadtree spatial-index


    【解决方案1】:

    四叉树上的每个节点都代表空间中的一个立方体(其中某些边可能处于无穷大),您可以计算该立方体与目标点 A 之间的最小距离。请注意,对于包含 A 的立方体,该距离为 0 .

    从根节点开始,您必须计算其每个子立方体(节点)到 A 的距离并将其插入到最小堆中。

    迭代地,您会在堆顶部获得最近的立方体并重复该过程。当您到达某个叶节点时,您只需使用蛮力在其中搜索离 A 最近的边。

    一旦堆顶立方体的距离大于目前找到的最近边的距离,就可以停止搜索。

    更新:顺便说一句,这实际上是使用四叉树或 kd-tree 或大多数空间结构搜索任何内容的一般方法。

    【讨论】:

      【解决方案2】:

      您可以尝试 voronoi 图并仅在 voronoi 单元内查找边缘。

      【讨论】:

        猜你喜欢
        • 2014-01-17
        • 2015-12-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多