我试图用一个最小的矩形覆盖一个简单的凹多边形。我的矩形可以是任意长度,但是它们具有最大宽度,并且多边形永远不会具有锐角。
我考虑过尝试将凹面多边形分解为三角形,以产生一组最小重叠的矩形,这些矩形将每个三角形的边界最小化,然后将这些矩形合并为更大的矩形。但是,我认为这不适用于多边形边缘的小缺口。这些凹口上的反射顶点创建的三角形将创建错误的矩形。我正在寻找将跨越/忽略缺口的矩形。
我对计算几何学一无所知,所以我不确定如何开始提出这个问题。
我发现其他类似的帖子,但不是我需要的:
一些示例:黑色是输入。红色是可接受的输出。
另一个例子:首选第二个输出。但是,生成两个输出并使用另一个因素确定偏好可能是必要的,而不是此算法的责任。
模仿曲线的多边形极为罕见。在这种情况下,矩形的大部分面积都被浪费了。但是,这是可以接受的,因为每个矩形都遵守最大宽度约束。
另外,我发现本文与我的需要很接近:
- Paul Iacob,Daniela Marinescu和Cristina Luca的矩形作品覆盖
也许更好的问题是“如何识别凹多边形的矩形部分?”
这是显示所需实现的图像:
绿色是实际的材料用量。红色矩形是布局。蓝色是整个多边形的MBR。我想我应该尝试获取少量MBR并将其填充。在左上角终止于多边形中间的2-3个绿色矩形非常昂贵。那就是我要最小化的。绿色矩形具有最小和最大宽度和高度,但是我可以使用足够多的行和列来覆盖一个区域。同样,我必须最小化不跨越输入的矩形的数量。我还可以修改绿色矩形的形状以适合在很小的地方,这也是非常昂贵的。换句话说,获得尽可能多的矩形以尽可能地跨度是理想的。