卷包裹法 得到凸包

给定一系列的点,求出这些点中可以组合得到的最大的凸多边形的点集。

即求凸包;

 

① 先从这一系列的点中找到y值最小的点,如果存在相等的y值,则取x值最小的点。

② 再根据其他各点与最小的点的向量之间的叉积的关系,对其他各点进行排序。

http://www.cnblogs.com/Booble/archive/2011/02/28/1967179.html

网址中的博客中说明的十分清楚;

两个向量:a b

if(a x b>0)则说明向量a在b的外侧,否则说明b在a的外侧。

将以上各点与最小点的向量进行叉乘,如果一个点与任何一个点的值都>0,那么该点在最外侧,为第二小点。

如有两点的向量的乘积为0,则比较两点的x值,x值更小一点的在排序中也更小一点。

③ 排序完之后,先将序列中的两个最小的点作为凸包的起始点,开始沿着排序的方向判断这一系列的点是否在凸包上;

即:if (a(i-1)i x ai(i+1)>0),则说明点(i-1)在凸包上。最后,需要把最大的点和起点连起来判断。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值