1. 判断点是否在凸包内,二分极角 O(log n) 与绕数法 O(n) 的取舍
对比判断点是否在凸包内的二分极角法 O(log n) 与绕数法 O(n) 的取舍?
- 二分极角法原理
- 绕数法(winding number)原理
- 复杂度与适用场景取舍
二分极角法:以凸包内某参考点(如凸包左下角点)为基点,把其他顶点按极角排序,查询点也按极角二分定位所在扇形,再判断与对应边的叉积关系,O(log n) 判定。需凸包已按极角排序且参考点确定。绕数法(或射线法):从查询点发出射线,统计与多边形边的交点/绕数,O(n) 判定,适用于任意多边形(不必凸)。取舍:若凸包多次查询,用 O(log n) 二分法;若单次查询或任意多边形,用 O(n) 绕数法。
二分法利用凸包极角单调性把查询降到对数;绕数法通用但线性。多次查询时对数优势明显,是"预处理换查询速度"的经典权衡。