得鹿梦鱼 得鹿梦鱼

改进的加权剖分简单多边形为凸多边形的算法

请优先阅读一个加权剖分简单多边形为凸多边形的算法
本文的内容来自于燕山大学学报第25卷第1期的内容

简单多边形剖分是计算几何中的一类基本问题,剖分算法在图像处理、模式识别、CAD/CAM以及计算机图形学等领域应用较广

pjp_j是从点pip_i发出的剖分线的另个端点,pipj\vec{p_ip_j}pipi1\vec{ p_ip_{i-1}}的夹角为α\alphapipj\vec{p_ip_j}pipi+1\vec{ p_ip_{i+1}}的夹角为β\beta

从下图中不难看出,角α\alphaβ\beta的差值αβ\alpha - \beta可以描述从pip_i发出的剖分线所在的区域,当剖分线位于区域0的角平分线上时,αβ=0\alpha - \beta=0, 当剖分线想两侧靠拢时,αβ\alpha - \beta逐渐增大,当点落在构成区域2的两条边上时,αβ\alpha - \beta取最大值

凹点凸点
凹点凸点

由于α,β\alpha, \beta在0和π\pi上取值,而余弦函数在此区间内是单调的,因此可是使用余弦函数代替cosαcosβ cos\alpha - cos \beta
设向量u1u_1是边向量pi1pi\vec{p_{i-1}p_i}的单位向量,向量u2u_2是边向量pipj+1\vec{p_{i}p_{j+1}}的单位向量,向量u3u_3是边向量pipj\vec{p_{i}p_j}的单位向量,
则更具向量内积有
cosα=u1u3=x1x3+y1y3cos \alpha = u_1 \cdot u_3 = x_1x_3 + y_1y_3
cosβ=u2u3=x2x3+y2y3cos \beta = u_2 \cdot u_3 = x_2x_3 + y_2y_3