, 使用 Python 3.9 开发 ;
一、Graham 凸包扫描算法
1、凸包概念
凸包概念 : 在二维平面中 , 包围点集的最小凸多边形 , 其顶点集包含了给定点集中的所有点 , 并且不存在任何一条线段可以穿过这个多边形的内部而不与多边形的边界相交...;
下图中 ,
左侧的 P1 图是凸包 ;
右侧的 P2 图不是凸包 , 因为该图中 , A2 到 B2 的点连接线与 凸多边形 的边界发生了相交 ;
2、常用的凸包算法
常用的凸包算法有 :
Graham...扫描法
Jarvis 步进法
快速凸包算法
3、Graham 凸包扫描算法
在二维平面上给出一个有限个点的点集 , 其坐标都为 (x , y) ;
Graham 格雷厄姆 凸包扫描算法 , 可以找到上述点集的...) 确定 ;
在角排序中 , 极角是指从基准点出发到其他点的连线与某一固定方向的夹角 ;
角排序用于解决凸包算法中的子问题 , 例如 Graham 扫描算法中 , 需要对点集中的点按照其与基准点的极角进行排序...扫描算法 , 计算出了点集的凸集 , 绘制效果如下 :