【问题标题】:How to get Voronoi site points from a diagram如何从图表中获取 Voronoi 站点点
【发布时间】:2018-09-01 17:56:35
【问题描述】:

假设我们从某个地方得到了一个 Voronoi 图,但没有点。

像这样,但没有红点:

我们只有边界。

是否有任何算法可以帮助检索点?


如果我们有无限延伸的 Voronoi 图。我们可以至少计算一个点还是有任何启发式算法?

【问题讨论】:

  • 欢迎来到 StackOverflow。但是,您的问题不符合我们关于 How to Ask 的指导方针,这是一个好问题。首先,问题不明确。图表究竟是如何给出的?显示一个包含 Voronoi 图的示例数据结构。其次,你没有展示你自己的工作,所以看起来你只是在把你的作​​业丢给我们。请告诉我们到目前为止您在此问题上所做的一些工作,最好包括代码,并告诉我们您遇到的问题。
  • Rory Daulton 数据结构并不重要。问题是关于算法而不是实现等。其次,谁转储了什么?那是与学校无关的问题。我以前什么也没做,因为我不是数学家什么的
  • SirRaffleBuffle 谢谢你!

标签: algorithm computational-geometry voronoi


【解决方案1】:

对于 Voronoi 图的单个交点,通常有 3 条边,边之间有 3 个扇区。将扇区(及其角度)称为ABC。此外,将扇区AB 之间的边缘称为边缘ab,对于边缘bcca 也是如此。

每个扇区内都应该有一个原始站点点;设站点a 为扇区A 中的站点、扇区B 中的站点b 和扇区C 中的站点c 请注意,与扇区边界任一侧的站点的角度必须相等,因为从 Voronoi 边缘到每个站点的距离必须相等。例如,站点a 到边缘ab 的角度必须与边缘ab 到站点b 的角度相同;称这个角度为X。同样让角度Y 是从站点b 到边缘bc 和从bc 到站点c 的角度;和Zcca 和从caa 的角度。

这给了你方程式:

A = Z + X
B = X + Y
C = Y + Z

有了解决方案(简化为A + B + C == 2 * pi):

X = (A + B - C)/2 = pi - C
Y = (B + C - A)/2 = pi - A
Z = (C + A - B)/2 = pi - B

这为您提供了从任何 Voronoi 交叉口到其 3 个站点中的每一个的射线。并且从相邻 Voronoi 交叉点到同一小区站点的光线相交将为您提供该站点的位置。


并且,回答您的第二个问题:如果您只有 3 个站点,那么您只能有一个 Voronoi 路口。在这种情况下,您将无法确定您的站点 - 只能确定它们与交叉路口的角度。

在所有其他一般情况下,您至少可以找到一个如上所述的网站;然后,通过 Voronoi 边缘的反射应该确定所有其他站点的位置,包括只有一个 Voronoi 交叉点的极值单元。

【讨论】:

    【解决方案2】:

    Ash 和 Bolker 在 1985 年对这个问题进行了调查并解决了一半。对于 完成早期工作的更现代版本,请参见:

    Biedl、Therese、Martin Held 和 Stefan Huber。 “识别直骨架和 Voronoi 图并重建它们的输入。” 科学与工程中的 Voronoi 图 (ISVD),2013 年第 10 届国际研讨会,第 37-46 页。 IEEE,2013 年。 (IEEE link.)



    (图片来自Stefan Huber。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多