【问题标题】:Given a Voronoi diagram, find its sites给定一个 Voronoi 图,找到它的站点
【发布时间】:2015-07-04 11:14:43
【问题描述】:

我们得到了 DCEL(双连通边列表)形式的 Voronoi 图,但没有构建 Voronoi 图的实际站点(只有 Voronoi 顶点、边和面)。

问题是在什么条件下我们可以(重新)构建给定图表所针对的点集,并给出执行此操作的算法。

到目前为止我所知道的:

  • 如果我们只找出一个站点,我们可以通过绘制圆圈找到所有其他站点(我们知道每个 Voronoi 顶点是一个空圆盘的中心,圆盘上有三个站点)
  • 如果给定站点,我知道用于构建 Voronoi 图的财富(扫描)算法是如何工作的

这个问题是家庭作业,所以我只寻找提示和技巧来推动我朝着正确的方向前进。

【问题讨论】:

  • 看来您所知道的基本上就是您所需要的:由于每个 voronoi vert 都位于具有 3 个以上站点的圆心,这意味着为了保持该vert,您只能缩放它围绕它的中心圈(没有旋转、倾斜或平移)。如果在您缩放第一个圈子时,有另一个相邻圈子与第一个圈子共享 2 个以上的站点,会发生什么情况?具体来说,第二个圆上站点之间的弧长会改变吗?
  • 不用多想,我猜,四个非共线顶点保证了唯一解?
  • @NickoPo 谢谢你的回答。不确定我是否理解,但在我看来,如果给出其中一个站点,您似乎正在描述一种获取站点的算法(站点之间的拱形长度是多少?)。也许我不是很清楚,但我已经知道如何找到网站,如果有的话。问题是如果没有给出任何网站怎么办。

标签: computational-geometry voronoi


【解决方案1】:

找到了找到前两个站点的解决方案。不确定正确性,但这个想法似乎是合理的。如前所述,获取其余站点是微不足道的。

http://tylerneylon.com/blog/2008/06/turning-convex-partition-into-voronoi.html

【讨论】:

    【解决方案2】:

    我想你可以解下一个线性规划:

    分钟 0

    s.t. (ai*xj+bi*yj+c_i)/(a^2+b^2)=-(ai*xk+bi*yk+c_i)/(a^2+b^2),其中ai*x+bi*y+c=0 是单元格 j 和 k 之间的线分离方程

    对 2D LP 使用一些 O(n log n) 最坏情况或 O(n) 预期算法。 如果有可行的解决方案,这些是它找到的站点(xi, yi),如果没有 - 这不是 Voronoi 图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多