多边形可见性与路径查询:算法原理与实践
1 最小嵌套多边形计算
1.1 问题定义
给定两个简单多边形 (P) 和 (Q),其中 (Q \subset P),目标是计算一个嵌套在 (P) 和 (Q) 之间且顶点数最少的多边形 (K)。
1.2 判断 (K) 是否为凸多边形
- 引理 7.5.7 :存在一个嵌套在 (P) 和 (Q) 之间的凸多边形 (K),当且仅当 (P) 的边界不与 (Q) 的凸包相交。
- 判断算法步骤 :
- 用 Graham 和 Yao 的算法计算 (Q) 的凸包 (C)。
- 取 (Q) 中的一点 (z),用 Lee 的算法计算从 (z) 看 (P) 的可见多边形 (V(z))。
- 从 (z) 出发,通过 (C) 和 (V(z)) 的每个顶点画射线,将平面划分为多个楔形区域。
- 合并 (C) 和 (V(z)) 顶点围绕 (z) 的角顺序,形成楔形区域的有序角顺序。
- 按有序角顺序遍历楔形区域,检查每个楔形区域内的边对是否相交。
- 若检测到相交,则报告 (K) 不是凸多边形;否则,报告 (K) 是凸多边形。
1.3 计算凸嵌套多边形 (K)
当 (K) 为凸多边形时,计算步骤如下:
1. 用 Graham 和 Yao 的算法计算 (Q) 的凸包 (C)。
2. 用 Gh
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



