半平面交 (Half-plane Intersection)
在平面直角坐标系中,一条有向直线将平面分为两个区域,每个区域称为一个半平面。多个半平面的交集构成的凸区域(可能为空或无界)即为半平面交。它是线性规划问题的几何体现。
1. 形式化描述与拓扑性质证明
定义:一个半平面 可以表示为 。在计算几何中,通常由有向直线 定义, 位于向量 的左侧。
2. 交点存在性一致性校验 (Intersection Consistency)
在半平面交中,由于涉及大量直线交点计算,误差的累积与放大是核心风险。
2.1 交点存在性判定
3. 教材级核心算法实现 (C++)
4. 经典教材级例题与应用 (Exercises)
例题 1:多边形核 (Polygon Kernel) 存在性证明
题目描述:判断一个多边形的核(Kernel)是否为空。 证明:多边形的核是内部所有点都能看到所有顶点的集合。这等价于点必须位于所有边的左侧(若逆时针)。因此,多边形的核即为其边所在半平面的交。
Check Solution
练习 1:最大内切圆 - 二分 + 半平面交
题目描述:在凸多边形内求半径最大的圆。 思路:
- 若半径为 ,则圆心必在所有边向内平移 后的半平面交内。
- 二分 ,检查平移后的半平面交是否非空。 一致性校验:平移后的直线 定义为 ,其中 为单位法向量。
Check Solution
练习 2:线性约束可行域面积
题目描述:给定一组约束 ,且 ,求可行域面积。 技巧:先添加四个边界半平面构成初始矩形,再运行半平面交。
Check Solution
提示:将约束转化为直线形式: 对应点 和方向向量 。注意方向必须满足左侧为可行域。
🎯 模块导航
- 凸包算法 (Convex Hull) - 几何基础。
- 旋转卡壳 (Rotating Calipers) - 求解极值问题。
- 计算几何基础 - 精度控制策略。