【问题标题】:Voronoi site points from Delaunay triangulation来自 Delaunay 三角测量的 Voronoi 站点点
【发布时间】:2017-02-04 23:57:41
【问题描述】:

如何从 Delaunay 三角测量中确定确切的 Voronoi 位点(单元格/区域)?

如果已经构建了 delaunay 三角剖分,则只需连接每个三角形的相邻外接圆中心即可轻松计算 voronoi 的边缘。

确定 Voronoi 点/站点也很容易,因为它们由 Delaunay 三角剖分中每个三角形的每个点表示。

但是,您如何确定特定的 voronoi 站点与 delaunay 三角剖分的特定边列表相匹配?

将一个和另一个作为单独的实体似乎很简单,但将它们放在一起是另一个挑战?

查看下图,您可以看到 Delaunay 三角剖分以及对偶 Voronoi 图。我描述的所有内容都可以在下面绘制,以便于参考。忽略绿色圆圈,因为这只是我从网络上获取的这个特定参考的产物。

【问题讨论】:

  • 这不是完全重复的。这讨论了如何找到边缘。我想找到这些地区。我想找到 voronoi 站点点并将它们映射到该问题没有回答的边缘。
  • 问题和链接的答案足以涵盖您的问题。为每个 Delaunay 顶点创建 Voronoi 点,为每个连接到该顶点的 Delaunay 边创建 Voronoi 边,并连接这些边以生成 Voronoi 单元。为了使连接简单,首先按角度对 Delaunay 边进行排序,因为边是按该顺序连接的。如果 Delauney 边仅与一个三角形相邻,则与其对应的 Voronoi 边趋于无穷。
  • 您的三角剖分究竟是如何表示的?
  • 目前我的三角剖分是一个三角形数组(3个点)。

标签: algorithm math computational-geometry voronoi


【解决方案1】:

如果您想要来自边缘的多边形,请选择每个边缘的中点和到每个站点的距离,然后对结果进行排序并选择第一个和第二个(当它们相等时)并将它们保存到多边形中。对于边界,当然只有 1 个边缘。可能是骗子:Getting polygons from voronoi edges.

这有点棘手且难以想象。我有点卡在边界上。这是来自 Alink 的原始答案:How can I get a dictionary of cells from this Voronoi Diagram data?

【讨论】:

    【解决方案2】:

    Delaunay 三角剖分中的每个顶点都代表一个 Voronoi 站点。因此,要创建一个站点的单元格,您需要一个这样的三角形 t 和一个在 t 中的顶点 v。现在计算 v 和 t 的两个剩余顶点之间的 Voronoi 边。通过逐个遍历 v 周围的三角形来重复此过程。假设您可以存储三角形之间的邻域关系,这最多需要 O(k) 时间,k 是 v 的相邻三角形的数量。

    这会将 Delaunay 三角剖分转换为 O(n) 时间/空间中的 Voronoi 图,用于 n 个站点。不需要排序,否则首先进行 Delaunay 三角剖分有什么意义。

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2021-11-23
      • 2018-11-12
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 2017-09-28
      • 2010-09-10
      • 1970-01-01
      相关资源
      最近更新 更多