用数学方法解决工程问题系列(四) 计算包围一组多边形的几何形状

现在要开始解决问题了。

我们的输入是一组连续的矩形,如下图橘黄色所示:

这里写图片描述

这些矩形表示的是这个小车的路线上需要连续锁定的区域。这些小框是怎么算出来的暂且不在这里讨论。

如果有一只蚂蚁替我们沿着这组矩形框的边缘走的话,它会走出像这样一个边界线框出来:

这里写图片描述

这个不规则多边形框正好能把一开始的矩形框包围住,如下所示:

这里写图片描述

注意右上角看起来并没有包住,露出了一个角出来,不过没关系,我们有很多办法把这个包围圈弄得更精确,只是需要根据项目需求把握好精确度和效率之间的平衡。

下面这几篇文章对于理解这个问题本身以及它的实现难度很有帮助,建议仔细阅读:

多边形点集排序–针对凸多边形,按逆时针方向进行排序[转]:
http://www.cnblogs.com/xiexiaokui/p/3989053.html

几何算法:点集合构造简单多边形 - AndyZeng:
http://www.tuicool.com/articles/YJF3ye2

从二维点集重建平面形状-浅议凹包算法 - Jumanco&Hide:
http://www.tuicool.com/articles/iUvMjm

最后一篇文章的思路很好,我也尝试了他的代码,不过这种方法有一个限制,那就是这些点不能间隔非常不均匀。另外一个我无法采用这种方法的原因,就是因为它还是慢了。

于是乎,我用了下面的做法:

这里写图片描述

我把这些矩形框占据的区域划分出m*n的小方块,然后通过一系列的计算方法找出这些真正被Cover到的小方块,然后把这些小方块的中心点连接起来就形成了一个比较紧密的包围圈了。如果想要这个包围圈更贴切,那就再多算点,找到它相应边上的顶点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值