凸包算法
来源:互联网 发布:四川医疗软件 编辑:程序博客网 时间:2024/04/28 06:12
其实这个算法是在一年前得某场比赛中临时抱佛脚学的,今天重新的来温习了一遍
如何来理解凸包?一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题了。这可以形象地想成这样:在地上放置一些不可移动的木桩,用一根绳子把他们尽量紧地圈起来,这就是凸包了,百度百科中的这张图很生动+活泼+形象,所以你懂的
好说完这个我们首先要来了解下极角排序和左转判定
极角排序:就是选取一个最左的点,按y最小,其次x最小来定义,接下来所有的点针对该点的射线,
按角度由小到大,若相同按距离由近到远来排序
左转判定:这个和叉积有关,对于向量p1(x1,y1),p2(x2,y2)如果x1*y2-x2*y1>0,则从p1到p2左转
我学的是Graham算法,那么接下来来介绍下该算法
(1)选取最下左的点P0
(2)计算出每个点相对于P0的角度和距离(利用这个来排序)排序
(3)设点数为n,将p[n-1]和p[0]入栈,判断点集合是否为一条直线(初始k=2表示当前凸包的大小)
(4)i从1到n-1遍历,对于p[k-1],p[k-2],p[i]若满足左转,将p[i]压入栈
否则i--,k--
(5)k--,返回k表示凸包的点数
下面是我写的模板
正在学习Melkman算法中。。。
- 凸包算法综述
- 凸包算法
- 凸包 graham 算法
- 凸包算法求凸包点
- 凸包算法
- 凸包算法
- 凸包算法
- 凸包算法
- 凸包算法
- 凸包算法分析
- opengl:凸包算法
- 二维凸包算法
- 凸包 graham 算法
- 凸包 graham 算法
- 凸包算法分析
- 凸包算法
- 计算凸包算法
- 凸包算法
- Linux 入门常用命令
- jffs2根文件系统制作(三)
- 如何显示出用下划线标记的快捷键 Shortcut Underlines Don't Show Up With Manifest??
- fedora mysql 安装
- java线程的简单知识积累
- 凸包算法
- 消息钩子函数入门篇
- HoneyComb3.0技术系列之Drag And Drop(一)
- Linux之父炮轰C++:糟糕程序员的垃圾语言
- Game Engine Architecture by Jason Gregory:1.5 游戏引擎概况
- Linux下C++开发工具介绍
- DOM
- 关于codeblocks的安装以及调试
- Oracle并发连接数的设置