本文目录
1 算法说明
Graham Scan算法由美国计算机科学家罗伯特·Graham于1972年提出。其目的是为了解决计算平面上点集的凸包问题。凸包是一个最小的凸多边形,能够包含所有点,并且是计算几何中的一个基本问题。Graham Scan以其相对简单和高效的实现而广泛应用于计算几何和计算机图形学中。
算法原理
Graham Scan的基本原理是通过极角排序和栈结构来构建凸包。它的核心思想是:
- 选择起始点:确定一个基准点(通常是点集中y坐标最低的点,若有多个则选择x坐标最小的点)。
- 极角排序:计算其他所有点相对于基准点的极角,并按极角排序。
- 构建凸包:使用栈结构动态添加点,根据转向判断来决定是否将点加入凸包。
算法流程
(1)找到起始点:
从点集中找到y坐标最小的点(基准点)。若有多个,选择 x x x坐标最小的点。
(2)按极角排序