【问题标题】:Algorithm to associate components of a Voronoi Diagram关联 Voronoi 图的组件的算法
【发布时间】:2014-05-29 00:33:12
【问题描述】:

到目前为止,我有一个程序,它采用一组随机点,即站点,并围绕这些点形成适当的 Voronoi 图,表示为角和边图。它还为我提供了 Delaunay 三角剖分作为另一个图表,其中所有站点都作为其节点(尽管我不知道这在这里是否有用)。

到目前为止,每个边缘对象都有它入射到哪些角的记录,并且每个角对象都有关于它入射到哪些边缘以及它与哪些其他角相邻的记录。我的目标是能够为我的Edge 类添加两个相邻站点的两个字段,并能够通过添加两个字段来扩展我的Site 类:一个包含围绕它的一组角,另一个用于它周围的一组边。

我在想也许可以使用修改后的广度优先搜索来生成所有单独的多边形。然而,这将需要遍历所有站点并计算出哪个属于哪个多边形,这将是 O(n^2),这并不理想。我们那里有没有更高效的算法可以做同样的事情?

【问题讨论】:

    标签: algorithm geometry voronoi


    【解决方案1】:

    我遇到了类似的问题。如果你有所有的边找到线的中点并遍历所有站点的列表。对列表进行排序,它会给出最近的 2 个站点。最接近的 2 个站点是您想要的,因为除了外边缘之外,一条边总是将 2 个站点分开。然后保留所有边缘和站点的列表并重复该过程,直到没有更多边缘为止。线索是您只需要添加一个站点的外部多边形。最后它给出了所有多边形的列表。

    【讨论】:

    • 我的解决方案似乎是 O(n^2) 但我认为您的解决方案需要更多的努力,因为多边形有 6..7 个面。它还需要给出面的方向。 Imo bfs 是 O(n^3..6) 有效吗?
    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2018-01-02
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多