【问题标题】:Relocate points in Delaunay triangulation重定位 Delaunay 三角剖分中的点
【发布时间】:2016-04-15 15:21:45
【问题描述】:

我刚刚完成了 Delaunay 的增量翻转算法的实现。该算法的时间复杂度为O(N log N)

该算法的应用是基于将每个点作为电话公司的天线。使用 Delaunay 算法,我必须用这些点对空间进行三角剖分,然后使用三角剖分生成 Voronoi 图,其中每个 Voronoi 多边形代表每个天线的覆盖范围

现在,我必须解决以下问题:

对于每个给定的点,和一个常数d,重新定位平面中的所有点,不超过每个点与原始坐标的距离d,使得Voronoi区域最大化。

我无法想象如何用高效的算法解决这个问题。 Delaunay 和 Voronoi 的算法已经实现。

谢谢!

【问题讨论】:

  • 问题不清楚。所有 Voronoi 区域组合起来覆盖整个平面(或它们需要覆盖的任何区域)。总面积是固定的,但是您可以移动这些点。
  • 看起来目标是使单元格区域彼此尽可能靠近。这究竟意味着什么还不清楚,但你至少可以做出有根据的猜测。你可以例如最小化标准差。
  • "... con el objetivo de igualar lo más posible el área de sus regiones de proximidad" 对我来说,这听起来好像 Voronoi 单元的面积应该尽可能相等。也许 [Lloyd 算法](con el objetivo de igualar lo más posible el área de sus regiones de proximidad) 的约束变体可以帮助您。

标签: algorithm optimization computational-geometry delaunay voronoi


【解决方案1】:

你可以试试劳埃德算法。对于每个站点,计算重心并将其与您的旧站点进行比较。如果距离不超过常数 d 重新定位站点,否则什么也不做。重新对站点进行三角测量以平滑网格。

【讨论】:

  • www.wikihow.com/Calculate-the-Center-of-a-Triangle
  • 谢谢!但是如果 voronoi 区域不是三角形会怎样?
  • @ValentinaRamirez:您可以通过对由 Voronoi 边和参考点组成的所有三角形的重心进行平均,并按其面积加权来找到 Voronoi 单元的重心:@ 987654321@
  • @Phpdevpad:详细说明什么?这只是对“但是如果 voronoi 区域不是三角形会发生什么?”的一个(可能没有帮助)评论
  • 好的,错字:分母中必须是sum(area[i])area[i] 是每个三角形的面积。 cog[i] 是上述链接中每个三角形的重心。对不起,如果我让你感到困惑;我认为计算 COG 是个问题。否则,如果您已经拥有 Voronoi 三角剖分代码,则 Lloyd 算法很简单。
猜你喜欢
  • 2015-01-07
  • 2019-04-18
  • 2020-08-05
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 2013-05-12
  • 1970-01-01
相关资源
最近更新 更多