旋转卡壳 (Rotating Calipers)
旋转卡壳(Rotating Calipers)是由 Michael Shamos 提出的一种在凸多边形上进行线性扫描的高效算法。它的核心在于利用凸多边形的拓扑单调性,通过两根(或多根)平行支撑线的旋转,在 时间内解决直径、宽度、外接矩形等问题。
1. 对踵点拓扑单调性证明
2. 数值鲁棒性分析 (Numerical Robustness)
旋转卡壳对“平行”和“共线”高度敏感。
3. 教材级经典推导与练习库 (Exercises)
例题 1:最小外接矩形 - 三指针一致性校验
题目描述:求覆盖凸多边形的最小面积矩形。 推导: 最小矩形的一条边必然与凸多边形的一条边 重合。 我们需要维护三个极值点:
- 最高点 :到 距离最大(由叉积维护)。
- 最右点 :在 方向上的投影最大(由点积维护)。
- 最左点 :在 方向上的投影最小(由点积维护)。
Check Solution
练习 1:两个凸包的最小距离
题目描述:求两个不相交凸包 的最短距离。 思路:
- 使用两组卡壳平行线。当 的支撑线与 的支撑线平行且反向时,距离取得局部极小。
- 距离可能由点-点、点-边或边-边产生。
Check Solution
提示:对两个凸包分别寻找 最小和 最大的点作为起始指针,进行同步旋转。比较四种组合下的最小距离。
练习 2:多边形宽度 (Width of Polygon)
题目描述:凸多边形的宽度是其两条平行支撑线之间的最小距离。 推导:宽度必由一条边 及其对应的对踵点 产生。即 。
Check Solution
🎯 模块导航
- 凸包算法 (Convex Hull) - 几何预处理。
- 半平面交 (Half-plane Intersection) - 线性约束。
- 计算几何基础 - 鲁棒性与精度。