【问题标题】:Expanding a n-vertices polygon with a new data set to a n-vertices polygon将具有新数据集的 n 顶点多边形扩展为 n 顶点多边形
【发布时间】:2009-09-08 14:52:55
【问题描述】:

有一个简单的多边形 P1,有 n 个顶点,n 很小,比如说 8。这个多边形应该代表一些 2D 点集的周长。

接下来,我们有另一个多边形,我们称之为 P2,也有最大顶点数 n。 P2 靠近 P1,因此绘制一个新的多边形 P3 是有意义的,它将一起描述 P1 和 P2 的面积。

我正在寻找算法来选择新多边形 P3 的点。我想尽可能好地描述(仍然有 n 个点!)P1 + P2 的形状:用于创建多边形且仍在新多边形 P3 内的点的数量应最大化,但面积P3 尽可能小。

扩大多边形的过程会在我的应用程序中反复调用。

【问题讨论】:

  • 这个问题不清楚。 P3 的内部必须包含 P1 和 P2 的内部吗? P3 的所有顶点必须是 P1 或 P2 的顶点吗? P1 和 P2 可以重叠吗?
  • 对不起。是的,P1 和 P2 的内部应由 P3 描述。是的,P1 和 P2 重叠或至少在躺卧区域附近。要构建 P3,我们可以使用 P1 和 P2 的任何顶点,但不能超过设置“n”(描述的大小应保持不变)。所以问题是从 2 组 n 点中选择 1 组 n 点,有序(所以,我们可以绘制一个多边形,检查其他点是否属于它......),所以新的 n 点最适合总和两个原点形状的一起。
  • 更简单的问题陈述:我们有n个边的多边形P,有一个新的顶点V_new。我们想将它包含在 P 中。P 的 n 个顶点中的哪个应该从 P 中驱逐?

标签: geometry 2d polygon


【解决方案1】:

如果我正确地阅读了这个问题,那是不可能的。考虑一个“半圆”,由沿曲线的 N 个点定义,而在直边上没有一个点。让 P1 和 P2 是两个这样的半圆,它们的直边像这样相互面对:(||)。显然,唯一包含它们的多边形包含所有 2N 个点。

更简单的问题(引入一个新顶点并选择一个旧顶点驱逐)也是不可能的:考虑一个三角形,以及靠近边缘中间的一个新点。

如果我们放弃内部不能丢失的要求,那么问题可以解决,但并不完美。我建议您尝试其中一些,看看您最适合哪种套件。

  • 只需将 P1 和 P2 组合成一个 2N 多边形,然后消除所有其他顶点(d.h. 保留顶点 2、4、6...)。粗制滥造,但也许足够好。
  • 将两个最近的邻居合并为一个。重复直到你只剩下N。
  • 消除“最直”的顶点,直到只剩下 N 个。
  • 从 2N 多边形开始,然后通过取其两条边的叉积来测量每个顶点对区域的贡献。如果是正数,这个顶点是凸的并且“保护”了大部分内部。如果为负,这是一个“排除”大部分外部的凹顶点。现在消除最不有价值的顶点。请注意,这不是完美的方法,因为消除两个邻居可能会造成比分数显示的更大的损害。

【讨论】:

  • 谢谢。你的问题是对的。我知道,具有 N 个顶点的新多边形并不完美(不会包括 P1 和 P2 中的所有点)。我可以选择占用太多区域或不够。我只是想让不精确性尽可能小。我喜欢你的想法,我会考虑的。重要的是,这是一个新问题,尚未解决。否则,我会采用现有的解决方案。
  • 我的问题的好处是,我为其创建多边形的点集以某种方式规则地分布。我们可以将这些点视为稀疏图的顶点,其中边的长度是有限的。事实上,它们代表了无线电信网络。信息交换也只发生在图中的邻居之间。当我对不同政策的(覆盖)效率有结果时,我会在这里报告。
【解决方案2】:

听起来您正试图找到一组具有可接受的点密度的多边形。有没有考虑构建一系列convex hulls?向外扩展您的集合,每次添加一个点时构建新的凸包。求新船体的密度。如果不可接受,请删除该点并选择其他点。到达目标区域或总点数时停止。

这也可以反过来应用。您可以使用初始多边形 P1 和 P2 播种凸包,然后考虑丢弃单个点并计算新密度。最有用的去除点是使密度增加最大化的点。重复直到满意为止。

简单的 O(n logn) convex hull algorithms 存在于二维中。 Qhull 是一个不错的 C 实现。

【讨论】:

  • 我的形状不能是凸的,例如,它可以看起来像一个肾脏。但是,扔掉积分的想法是可行的,因为我最多只有 2n 个积分。目标是通过使用新的多边形 P3 作为分类器,如果平面上的某个点属于区域 P1+P2,则同时最大化分类精度 P 和召回率 R。我不明白你关于密度的评论。感谢您的回答。
  • @Joanna:我说的密度,就是单位空间面积的点数。我同意你关于肾脏形状的观点。有许多相关问题可能对您有所帮助。参见例如stackoverflow.com/questions/83593/…
  • @ire_:来自引用链接的凹壳算法是我需要的。完美会给出一个固定数量的点,否则我将不得不在每次迭代时修剪结果。美好的一天,谢谢!
猜你喜欢
  • 2015-03-26
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 2010-10-11
  • 2012-01-01
  • 1970-01-01
相关资源
最近更新 更多