多边形域中的可见性与射线投射查询
1. 射线投射查询
射线投射查询旨在找出从给定点发出的射线与障碍物的第一个交点。在进行查询前,需要完成一些预处理工作,包括计算海洋区域 $M$、所有海湾和运河,以及给定凸障碍物集合 $P’$,这些预处理工作需要 $O(n + h \log_{1 + \epsilon} h)$ 的时间。
假设射线 $\sigma(q)$ 从点 $q \in F$ 出发,$q^*$ 是射线 $\sigma(q)$ 与输入障碍物 $P$ 或区域 $R$ 的边界 $\partial R$ 的第一个交点。为简化讨论,假设包含射线 $\sigma(q)$ 的直线不经过任何障碍物顶点,且点 $q$ 可能位于海洋 $M$、海湾或运河中。
- 当 $q \in M$ 时 :
- 如果射线 $\sigma(q)$ 在到达 $\partial R$ 之前未与 $P’$ 中的任何障碍物相交,则射线 $\sigma(q)$ 在 $R$ 内的部分完全位于 $M$ 中,此时 $q^*$ 位于 $\partial R$ 上。
- 若射线 $\sigma(q)$ 与 $P’$ 中的障碍物相交,设第一个交点为 $p$。由于 $P’$ 中障碍物的每条边要么是输入障碍物 $P$ 的边,要么是海湾/运河的门,若 $p$ 不在任何海湾/运河的门上,则 $p$ 位于输入障碍物 $P$ 上,即 $q^ = p$;若 $p$ 位于海湾 $B$ 的门上,由于 $B$ 只有一个门,$q^ $ 必然位于 $B$ 的边界上;若 $p$ 位于运河 $C$ 的门上,根据引理 1 的不透明属性,$q^*$
超级会员免费看
订阅专栏 解锁全文
253

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



