Liang-Barsky算法步骤: 1) 令u1=0.0,u2=1.0,k=1; 2) 按参数化形式写出裁剪条件: 这4个表达式可以统一表示为: ; 其中, p1 = -Δx, q1 = x0 - xmin; p2 = Δx, q2 = xmax - x0; p3 = -Δy, q3 = y0 - ymin; p4 = Δy, q4 = ymax - y0。 3) 如果pk≠0: a) 如果pk<0,u1 = max{ u1,rk=qk/pk }; b) 如果pk>0,u2 = min{ u2,rk=qk/pk }; c) 如果u1>u2,则线段位于裁剪区域之外,舍弃之,转8);否则,转5); 4) 如果pk=0,则表示直线平行于第k条裁剪边界(k=1,2,3,4分别对应于左、右、下、上边界)。 a) 如果同时还满足qk<0,则该线段完全在裁剪边界外,舍弃之,转8);否则,转5); 5) k++; 6) 如果k≤4,转3);否则,转7); 7) t∈[u1,u2]的线段就是原线段P0P1的可见部分,应当保存或显示; 8) 结束。 |