【问题标题】:Is there an algorithm to reduce the sides of a Polygon while keeping all Points within the Polygon?是否有一种算法可以减少多边形的边,同时保持多边形内的所有点?
【发布时间】:2018-04-08 23:01:53
【问题描述】:

我正在尝试将具有 4 个以上顶点的多边形简化为具有 4 个边的多边形,以便稍后执行透视变换。我需要找到包含原始多边形所有点的 4 个边的多边形。基本上我想要的是这样的:

这里真正的问题是多边形只能变得更大......如果它变得更小,比如说多边形逼近算法,它就不再有用了......

编辑: 我需要最佳解决方案,这意味着生成的 4 边多边形的面积尽可能小!

编辑2: 也可以使用凸包算法,我可以在其中确定生成的多边形必须具有的边数!

【问题讨论】:

标签: algorithm polygon reduce


【解决方案1】:

最简单的解决方案是获取多边形的边界框、由顶点 x 值的最小值和最大值以及 y 值的最小值和最大值定义的矩形。

如果您需要一个面积较小的 4 顶点多边形,一个想法可能是:

  • 获取多边形的凸包。
  • 选择要删除的一侧,并将其相邻的两侧延伸到它们相交的点。只有当他们真的在被删除的那一侧相遇时才这样做。也许您想选择要删除的边,该边是该删除添加到多边形的最小区域(即删除边和新交点形成的三角形)。
  • 重复直到只剩下 4 个边。

【讨论】:

  • 如果我使用边界框,我将丢失以后透视变换所需的信息......我将尝试实施第二种算法并在完成后发布反馈。
  • 好吧...对于我的问题,如果我选择最小的线作为被消除的线,点的扩展似乎可以正常工作...我想这解决了我的问题:)!
猜你喜欢
  • 2011-12-19
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2019-11-23
  • 1970-01-01
  • 2010-10-28
相关资源
最近更新 更多