我想找到一个多边形的旋转和位置,它可以在一个更大的多边形拟合的约束范围内最大化它的大小。
目前的想法是使用scipy optimization routines来优化位置和旋转参数以最大化缩放参数,并使用shapely来添加包含多边形的约束。这似乎很慢而且不是特别优雅。
其他想法?
答案 0 :(得分:1)
这个问题听起来像是NP-Hard。鉴于候选解决方案,您无法确定它是最佳解决方案。您似乎需要尝试使用某种增量随机搜索。
答案 1 :(得分:1)
如果内部多边形是最大缩放的,则至少有4对“内部顶点 - 外部边缘”或“外部顶点 - 内部边缘”,其中顶点位于边缘。
让我们取所有4个顶点边对。对于每一个,我们得到两个参考点坐标的线性方程组。如果它有一个解决方案,我们验证没有交叉点,如果确定,我们记住内部多边形的坐标和大小。
这是一个确切的解决方案,但速度很慢。另一方面,scipy优化例程可能会找到一个不是全局的局部最大值。