是否有算法减少多边形的边,同时保持多边形内的所有点?

时间:2017-10-27 10:51:18

标签: algorithm polygon reduce

我试图将具有4个以上顶点的多边形缩小为具有4个边的多边形,以便稍后执行透视变换。我需要找到包含4个边的多边形,其中包含原始多边形所具有的所有点。基本上我想要的是这样的: enter image description here

这里真正的问题是多边形必须变得更大......如果它变得更小,让我们说一个多边形近似算法,它就不再有用了......

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

EDIT2: 什么也可以使用凸壳算法,我可以确定生成的多边形必须具有的边数!

1 个答案:

答案 0 :(得分:1)

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

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

  • 取多边形的凸包。
  • 选择一面进行删除,并将其相邻边扩展到它们相遇的位置。只有当他们真正在被删除的一方所在的地方见面时才这样做。也许你想选择这个删除添加到多边形的最小区域删除的一侧(这是由删除的一侧和新的交叉点形成的三角形)。
  • 重复直到只留下4个边。