简单多边形中的可见性查询及应用
1. 可见性查询算法概述
在处理简单多边形中的可见性查询问题时,我们有一个查询时间为 (O(\log^2 n + |V (q)|)) 的算法。该算法接近最优,需要 (O(n^2 \log n)) 的预处理时间和 (O(n^2)) 的存储空间。与其他算法相比,其存储和预处理时间少了一个线性因子。此算法还可扩展用于计算可见性多边形的大小和回答锥形可见性查询。
直观上,查询点的可见性多边形计算步骤如下:
1. 将多边形内部划分为规范区域。
2. 在每个区域内构建可见性多边形。
3. 将这些区域的可见性多边形拼接起来。
2. 计算部分可见性多边形
假设多边形 (P) 被对角线 (e) 分为两部分 (L) 和 (R),我们要计算点 (q \in R) 在 (L) 中的部分可见性多边形 (V_L(q))。
对于任意两点 (p \in L) 和 (q \in R),(q) 能看到 (p) 当且仅当线段 (pq) 不穿过 (\partial P)。由于 (\partial P = (\partial L \setminus {e}) \cup (\partial R \setminus {e})),我们分别考虑:
- 定义可见性锥 (C_e(q)) :以 (q) 为顶点,由从 (q) 可见的 (e) 部分的端点界定的锥体。(pq) 不穿过 (\partial R \setminus {e}) 当且仅当 (p) 位于 (C_e(q)) 内。
- 定义外部可见性多边形 (EV_L(q)) :假设 (\
超级会员免费看
订阅专栏 解锁全文
25

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



