简单多边形中计算点的可见性
在几何计算领域,简单多边形中计算点的可见性是一个重要的问题,它在许多实际应用中都有广泛的用途,比如计算机图形学、机器人导航等。下面我们将详细探讨如何计算简单多边形内一个点的可见性多边形,以及如何去除多边形的缠绕问题。
1. 计算简单多边形内点的可见性多边形
在一个(n)边形的简单多边形(P)内给定一个点(q),我们的目标是计算点(q)的可见性多边形(V(q))。这里有一个算法,它在从(v_0)到(v_n)扫描多边形(P)的顶点时,每个顶点只会被考虑一次。如果某个顶点(v_i)被压入栈中,除非在回溯过程中被移除,否则它会一直留在栈中。一旦(v_i)从栈中移除,算法就不会再考虑它。因此,该算法的整体时间复杂度为(O(n))。
定理 1 :给定一个(n)边形的简单多边形(P)内的点(q),其可见性多边形(V(q))可以在(O(n))时间内计算出来。
这里还有一个相关的练习:假设(q)是一个给定的三角化简单多边形(P)内的点,设计一个程序来计算(q)在(P)中的可见性多边形,该程序的运行时间与在(P)的三角化中从(q)部分或完全可见的三角形数量成正比。
2. 去除多边形的缠绕:(O(n))算法
接下来,我们要介绍一个由Bhattacharya等人提出的(O(n))时间算法,用于去除简单多边形(P)相对于其内部给定点(q)的缠绕问题。
给定一个简单多边形(P)和点(q \in P),我们的问题是计算一个简单多边形(P1 \subseteq P)(称为修剪多边形),使得(P1)包含(V(q))和(q),并且当按顺时针或逆时针顺序扫描(P1)的边
简单多边形中点的可见性计算
超级会员免费看
订阅专栏 解锁全文

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



