我正在寻找一个好的算法来在一个(不一定是凸多边形)中找到一个轴对齐的矩形。最大矩形比较好,但并非必须——任何能够找到“相当不错”的矩形的算法都可以。
多边形也可能有洞,但任何只适用于凸或简单多边形的算法的指针也将很有帮助。
在我的实现中,边缘的相交测试比较便宜,但点在多边形内的测试比较昂贵,因此最好将其最小化。
我正在寻找一个好的算法来在一个(不一定是凸多边形)中找到一个轴对齐的矩形。最大矩形比较好,但并非必须——任何能够找到“相当不错”的矩形的算法都可以。
多边形也可能有洞,但任何只适用于凸或简单多边形的算法的指针也将很有帮助。
在我的实现中,边缘的相交测试比较便宜,但点在多边形内的测试比较昂贵,因此最好将其最小化。
仅供参考,目前我所拥有的是暴力破解:制作一个网格,在网格上的点如果在多边形内部,则通过逐个扩展每个角落或边缘直到触碰边缘来制作一系列矩形。然后选择最大的矩形。
最简单(并且非常有效)的优化是只有在检查网格点不包含在已经构建的矩形之一中后,才测试网格点是否在多边形内部,因为“点在矩形中”的检查速度非常快。
由于明显的原因,这种方法相当缓慢和不精确,更不用说不雅观了 :)
使用剪耳算法如何?您可以在每个三角形中找到最大的轴对齐矩形。然后,您可以尝试连接三角形并重新计算矩形。