最宽一角走廊算法与最大邻居Voronoi游戏解析
1. 最宽一角走廊算法
在计算最宽一角走廊时,我们可以使用相同的方法分别计算类型为 $C_{ij}^{LB}$、$C_{ij}^{RA}$ 和 $C_{ij}^{RB}$ 的最宽一角走廊。接下来,我们将展示如何利用现有的1型单端走廊来计算最宽一角走廊。
对于给定的点 $p_i$,我们进行以下操作:
1. 考虑一条垂直于点 $p_i$ 的直线 $\ell$。
2. 在点 $p_i$ 处绘制一条垂直于 $\ell$ 且位于 $\ell$ 右侧的半直线 $\ell’$。
3. 计算位于 $\ell$ 右侧的点集 $P_R$ 中各点的对偶线的排列 $A$,并使用相同的数据结构存储该排列。
4. 将直线 $\ell$ 和半直线 $\ell’$ 以相同的速度绕点 $p_i$ 逆时针旋转,直到 $\ell$ 或 $\ell’$ 到达点 $p_k$。此时会出现两种情况:
- 若 $\ell$ 碰到点 $p_k$,则按照上述方法插入或删除与 $p_k$ 对应的对偶线来更新排列 $A$,此操作需要 $O(n \log n)$ 的时间。
- 若 $\ell’$ 到达点 $p_k$,且 $[p_i, p_k]$ 定义了一个有效的1型单端走廊 $C_1^{ik}$,则执行以下步骤:
1. 计算位于线段 $[p_i, p_k]$ 上方且在带状区域 $L_1 = (\ell’, \ell’‘)$ 内的点的凸包 $H_{ik}$,其中 $\ell’$ 和 $\ell’‘$ 是1型单端走廊 $C_1^{ik}$ 的两条平行边。
2. 计算相对于凸包 $H_{ik}$ 的下链的有效走廊中的最宽走廊。在最坏情
超级会员免费看
订阅专栏 解锁全文
4623

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



