切线可见性图的计算方法
在几何计算和路径规划领域,计算多边形内的切线可见性图是一个重要的问题,它对于求解欧几里得最短路径等问题具有关键作用。下面将详细介绍在不同情况下(凸洞和非凸洞)计算切线可见性图的算法。
1. 凸洞情况:O(n + h² log h) 算法
在一个包含 h 个凸洞、总共 n 个顶点的凸多边形 P 中,我们可以使用 Rohnert 提出的算法来计算切线可见性图。这个图包含了计算多边形 P 内两点 s 和 t 之间欧几里得最短路径 SP(s, t) 所需的所有相关边。
1.1 切线的定义
如果一条直线通过两个不同凸洞上的顶点 vi 和 vj,且该直线仅在 vi 和 vj 处与洞相交,那么线段 vivj 就被称为这两个凸洞之间的切线。对于最短路径 SP(s, t) = (s, u1, …, uk, t),有以下三个特点:
- su1 是从 s 到某个凸洞顶点 u1 的切线;
- ukt 是从 t 到某个凸洞顶点 uk 的切线;
- 对于任意边 uiui+1,它要么是凸洞的边,要么是两个凸洞之间的切线。
1.2 切线可见性图的定义
设 G 是多边形 P 的部分可见性图,其中 s、t 和 P 中所有洞的顶点都表示为 G 中的节点。当且仅当以下两个条件同时满足时,两个节点 wi 和 wj 之间存在一条边:
- wi 和 wj 对应的顶点在 P 中相互可见;
- 线段 wiwj 在 P 中对应的线段是 P 的边、两个凸洞之间的切线,或者是从 s 或 t 到某个凸洞的切线。
将 P 中这些边和切线的长度作为权重分配给 G 中对应的边。由于两
超级会员免费看
订阅专栏 解锁全文
15

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



