【问题标题】:How to partition a plane如何划分平面
【发布时间】:2009-08-12 08:05:26
【问题描述】:

假设我有一个固定数量 (X) 的点,例如给定平面内的坐标(我认为您可以将其称为二维点云)。

这些点应划分为 Y

把它想象成形成国家的地点。例如,我有 12 个点,想创建 3 个多边形,每个多边形有 4 个点。

我想创建一个覆盖点的网格。然后遍历这些点,将它们分配给最近的网格单元。

也许我错过了显而易见的事情?我相信有更好的解决方案。

谢谢, 丹尼尔

我刚刚找到an optimization (kmeans++)。也许这会产生更好的结果..

【问题讨论】:

  • 使用网格,您可能会得到空单元格,或者一个单元格中的所有点。使用径向阵列,您可以通过一种快速且易于实施的解决方案来克服这一问题。

标签: coordinates polygon plane


【解决方案1】:

你提到了Voronoi图,你看过相关的tesselation algorithms吗?如果是这样,您能否强调一下为什么它们不适合您?

【讨论】:

  • Voronoi 图的每个多边形都有一个点,但是这里的多边形应该由任意数量的点组成。我忘了说:我也尝试过劳埃德算法(k-means),但结果过于依赖于初始选择。收敛性一般不太好。
【解决方案2】:

您可能需要更好地定义要用于创建多边形分区的标准。例如,如果是接近,您可以执行以下操作;

  • 构建一个 voronoi 图。
  • 如果任意两个相邻多边形有近邻,则将它们合并为一个多边形
  • 重复直到获得所需数量的多边形

如果每个多边形的点数相等,您可以基于合并相邻多边形来做类似的事情,直到满足所需的点数。

编辑:如果凸度是最重要的问题,您可以简单地在云中间取一个点,然后将径向投影到边缘,将云划分为三角形的径向阵列。

【讨论】:

    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      相关资源
      最近更新 更多