游程描述的任意区域最小旋转矩形算法实现

效果

采用游程描述了多个区域,经过算法计算,找到最小包围矩形。
请添加图片描述
白色是指定的区域,黄色是该区域的最小旋转矩形。

算法原理

有时候算法不一定很高深,只要把道理点破,实现起来很简单,难的是最开始的算法构思过程。
区域最小旋转矩形的算法原理也很简单:将区域从0到90度按照步长旋转,每一步都计算矩形的面积,当面积取最小时的旋转角度就是最小旋转矩形的角度。
然后就会有很多优化的方法,比如:1:用游程描述的区域,只要保证游程两个端点在矩形内,那么游程上所有点都在矩形内(线段两个端点在凸包内,那么线段上任意一点都在凸包内),所有只需要对游程的两个端点进行计算。2:由于采用的是按步长搜索的方法,因此可以进行两轮搜索,第一轮采用大步长,确定目标大致范围,第二轮采用小步长,在目标范围附近搜索,达到更高精度但算法耗时更短。

基础知识

如何描述一个区域?

采用游程的方法,比如有如下区域,
在这里插入图片描述

描述方法为:(x1,x2,y),x采用左闭右开区间。

猜你喜欢

转载自blog.csdn.net/iamqianrenzhan/article/details/127161023
今日推荐