计算几何--凸包--Andrew算法--HDU1392

题目描述

给出一些点,求凸包的周长。

什么是凸包

用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有的点。

凸包的Andrew算法

Andrew算法是graham的变种。它的思想是这样的:
先按横坐标排序,然后选出最左边的点(最左边的点一定要选入凸包),这样,就把问题转化为求凸包的上下凸壳。考虑求下凸壳,考虑如果求好了一个下凸壳,现在从最右边加入一个点,那么就要把所有和这个点形成上凸形势的点都删去,由于斜率具有单调性,所以只要删去末尾的一些点就可以了,可以用栈维护。

如何判断上凸下凸

有了Aandrew算法,最重要的问题就是如何判断上凸下凸形势了,当然可以利用斜率来判断,但是斜率可能会有精度问题,可以用向量的叉积来判断。cross=x1y2x2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值