计算几何基础 (Geometry Basics)
计算几何(Computational Geometry)是算法竞赛中逻辑最为严密、容错率最低的版块之一。其核心在于通过向量算子将欧几里得几何直观转化为代数运算,并利用鲁棒性策略屏蔽浮点数截断带来的逻辑崩塌。
1. 精度控制与误差收敛分析 (Numerical Precision & Convergence)
在计算机中,实数 被离散化为浮点数集。由于有限位数的限制,几何判定的不一致性是导致程序崩溃的主因。
1.1 机器精度与 模型 (Static Epsilon)
通过引入一个小量 ( ),我们将连续判定转化为区间判定。
1.2 误差传播与收敛界证明 (Error Propagation)
2. 拓扑原语一致性证明 (Topological Consistency)
几何算法的鲁棒性不仅取决于精度,更取决于代数一致性(Algebraic Consistency)。
2.1 全序关系保护 (Strict Weak Ordering)
2.2 几何原语判定 (Geometric Predicates)
| 算子 | 代数表达 | 鲁棒判定 | 几何意义 |
|---|---|---|---|
| OnLine | sign(cross(a, b)) == 0 | 共线判定 | |
| LeftTurn | sign(cross(a, b)) > 0 | 逆时针旋转 (CCW) | |
| InSegment | sign(dot(a-p, b-p)) <= 0 | 点在线段投影内 |
3. 核心向量算子鲁棒性验证 (Robust Vector Operators)
3.1 叉积的有向面积特性
4. 交点一致性校验 (Intersection Consistency)
在计算直线交点时,必须处理近乎平行的情况。
5. 经典教材级例题与练习 (Exercises)
例题 1:点在线段上的充分必要条件证明
命题:点 在线段 上当且仅当 且 。 证明:
- 必要性:若 ,则 共线 。且 在 之间,向量方向相反 。
- 充分性: 在直线 上。设 ,则 ,。 。 故 在线段 上。
练习 1:多边形面积的有向性合并
题目描述:给定简单多边形顶点 ,证明其面积 。 推导:利用格林公式的离散形式。每个对原点的三角形 的有向面积为 。若 在多边形外,外部面积会在环绕过程中被正负抵消。
Check Solution
练习 2:最小圆覆盖 (Smallest Enclosing Circle)
题目描述:给定 个点,求覆盖所有点的最小圆。 思路:随机增量法。期望复杂度 。证明核心在于圆的唯一性与三点确定圆。
Check Solution
🎯 模块导航
- 凸包算法 (Convex Hull) - 构建最小凸闭包与拓扑证明。
- 半平面交 (Half-plane Intersection) - 线性约束与鲁棒性优化。
- 扫描线技巧 (Scanning Line) - 降维打击与复杂度边界。
- 旋转卡壳 (Rotating Calipers) - 极值问题与对踵点维护。