找到内接在较大多边形中的最大面积多边形

时间:2013-06-28 07:51:05

标签: python geometry polygon

我想找到一个多边形的旋转和位置,它可以在一个更大的多边形拟合的约束范围内最大化它的大小。

polygons

目前的想法是使用scipy optimization routines来优化位置和旋转参数以最大化缩放参数,并使用shapely来添加包含多边形的约束。这似乎很慢而且不是特别优雅。

其他想法?

2 个答案:

答案 0 :(得分:1)

这个问题听起来像是NP-Hard。鉴于候选解决方案,您无法确定它是最佳解决方案。您似乎需要尝试使用某种增量随机搜索。

答案 1 :(得分:1)

如果内部多边形是最大缩放的,则至少有4对“内部顶点 - 外部边缘”或“外部顶点 - 内部边缘”,其中顶点位于边缘。

让我们取所有4个顶点边对。对于每一个,我们得到两个参考点坐标的线性方程组。如果它有一个解决方案,我们验证没有交叉点,如果确定,我们记住内部多边形的坐标和大小。

这是一个确切的解决方案,但速度很慢。另一方面,scipy优化例程可能会找到一个不是全局的局部最大值。