已知一多边形,怎样求得与其重合度最高的矩形
我的算法是这样的:你上面的图是凸多边形,我就拿一个极端的凹多边形来试试:
这个多边形够极端吧(带个把)题主所说的找到此图形的质心。这个方向是对的。假设此图的质心是O点。如下图:
如上图所指,我们找到了质心,然后我们要确定最适合的矩形的朝向(向哪个方向倾斜)这样我们遍历A图形的所有顶点,找到离O点最远的那个点定为F点。应该是下图这个点:
然后以O到F建立X轴:
然后垂直于x-axis建立y轴。
以下是一个动态调节的过程(想象一下摄像机焦距的对焦过程)以O点为出发向+X方向移动一条平行于y轴的平行线,直到与图形A不相交即到达F点。如下图
同样的过程向-x方向发射一条平行线,到达图形的最远端,如下图:
还剩剩余y轴两个方向,同样这样处理,最后如图:
其实就是一个包裹A图形的最小矩形ABCD.下面是动态调节的过程,保持AB:BD的比例(保持此矩形的长宽比),缩小此矩形,直到此矩形的面积 = A图形的面积。如下图:
然后黑色矩形就是题主所要求的重合度最高的矩形。如果有什么问题,也请帮忙指正一下。--------------------------------------------------------------------------------------- @孙鹏飞针对有人说一下图形不适合,我也简单做了下示意图,我没有电脑验证过,我基本认为也是可以解决的。P为到质心的最远点,以确定X轴的方向。
【已知一多边形,怎样求得与其重合度最高的矩形】
■网友
OpenCV里有boundingRect函数,不谢!
■网友
如果能确定矩形的方位,二分两边长应该可以搞定。
■网友
多边形拟合,先逐步减少拟合所需要的点数,最后简化为一个四边形,再去求最接近这个四边形的矩形,循序渐进,肯定有部分特例,但是这种方法比较稳定而且实用
■网友
一个想法,不一定对。轴向的确定是不是可以通过找到一维投影最大的连续峰所在的方向,取投影方向作为矩形的一轴?另一个想法,也不一定对。利用主成分提取?
■网友
实在不行遗传算法吧.....
■网友
@叶蔚 你的方法这奇葩形状不适用
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
