关联Voronoi图的组件的算法

时间:2014-05-29 00:33:12

标签: algorithm geometry voronoi

我有一个程序,到目前为止采取一组随机点,站点,并围绕这些点形成适当的Voronoi图表示为角和边的图形。它还给我Delaunay三角剖分作为另一个图表,其中所有站点都作为其节点(虽然我不能告诉它在这里是否有用)。

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

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

1 个答案:

答案 0 :(得分:1)

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