二维凸包算法

博客参考:http://blog.csdn.net/chao_xun/article/details/8042403
谢谢 【chao_xun】把凸包写的这么详细。

原始思路

关于凸包的问题的解决的最初思路是这样的。
<1>找到一个基准点<必须在凸边上>
<2>以基准点做射线,然后将该射线向固定方向旋转,直到接触到一个新的点。
<3>以<2>中找到的点作为新的基准点,作射线继续朝着一开始的固定的方向旋转
<4>反复重复2,3直到最后所有边闭合起来
如下图:
这里写图片描述

**

算法步骤

**
下文是参照了【chao_xun】博客中的算法的理解写出的步骤
1.首先选取一个极点,最下边的点,若最低高度相等取最左边(只要保证此点必为凸边上的点即可),以此作为基准点;
2.易知,该点一定在凸包的边上,所以可以以该点与另外一个点连线成边,作为凸包的边:以基准点为射线的端点,做一条X轴正方向的水平射线,扫面各个点与基准点所构成的向量与x轴正方向所构成的夹角,依照夹角进行排序,然后进行第三步的连边(排序的作用意义非常),下图是扫描排序的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值