凸包算法的初步学习
摘要:
所谓凸包问题是指给定一系列的点,求解出这些点中组合起来的能把所有其他点包裹起来的最小多边形。预备知识是向量的点乘和方向判定。方法是,首先找出纵坐标最小的点,若有相同最小纵坐标再取横坐标最小,如果有相同的点可以删掉一个;之后以选定的点为基准,按照每点与基准点的角度大小进行扫描,扫描规以上图为例,首先以A为基准点,首先插入B,可知B一定在凸包上,接下来扫描C...当扫描到G时,向量,和向量的点乘为正(逆时针扫描时判断是否为负,顺时针相反),则删掉H,回溯删掉所有符号不相同的点。扫描完一遍后,即可得到凸包。其算法空间复杂度为O(1)。代码如下:#include #include #include u 阅读全文
posted @ 2013-11-06 20:20 金仁赫 阅读(291) 评论(0) 推荐(0)