【问题标题】:Smallest Convex polygon around point点周围的最小凸多边形
【发布时间】:2018-06-28 09:23:44
【问题描述】:

我得到了一堆二维点。我试图找到的是一个特定点周围的最小多边形(由完全包围的最小点集创建)。我尝试使用凸包和 Voronoi,但它们都没有产生我正在寻找的结果,而且我的想法已经用完了......

我想要找到的是代表围绕点(绿色)的最小凸多边形的线(红色),如下图所示:

另一个例子:

任何代码、建议或已知算法将不胜感激...

【问题讨论】:

  • 多边形可以有多少个顶点是否有任何限制? “最小”是指表面而不是圆周,对吗?哦,这个问题与 c++ 或 c 有什么关系?
  • 你说的“最小的多边形”是指面积最小的多边形还是点数最少的多边形,还是别的什么?
  • 应该在Software Engineering部分
  • @McBob 那么它不总是 3 还是不可能的?在第一个示例中,我可以看到一个多边形,其中包含只有 3 个顶点的绿点 ...
  • 在您的第一个示例中,有一个包含绿点的黑点三角形,尽管看起来它的面积大于您绘制的红色四边形。但是你说你要找的顶点数最少,所以这个例子是错误的。

标签: c++ c algorithm math


【解决方案1】:

从图表中的任何黑点开始,我们称其为 A。从 A 点画线到绿点 G。现在从 A 点画线到任何其他点 A1、A2、...。如果按顺时针方向,这条线在 AG 线之后,忽略它。从所有其他线中选择与线 AG 形成最小角度的线。现在将点 A 移动到下一个点。重复,直到您第二次访问一个点。

【讨论】:

  • 不,最小的角度不会给你最小的周长。这是一种功能启发式,但可能会产生非常糟糕的结果:i.stack.imgur.com/ePgEU.png 请注意,我不会浪费太多时间来完美解决它,我相信它是 NP-Complete。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 2014-03-13
  • 2012-04-15
  • 1970-01-01
  • 2013-07-11
  • 2022-06-20
  • 1970-01-01
相关资源
最近更新 更多