Liang-Barsky直线裁剪算法简介
算法概要
Liang-Barsky算法由浙江大学的梁友栋与加州大学伯克利分校的BrianA. Barsky共同提出。该算法采用直线参数方程和不等式,以确定裁剪框与直线间的交点。
算法实现流程
1. 在执行交点计算之前,Liang-Barsky算法会首先对线段进行足够的检测以保证其有必要进行裁剪。对直线上点的位置进行定义;其中(x0, y0)为直线始点,(x1, y1)为直线末点:
x = x0 + u(x1 - x0) = x0 + u*dx;
y = y0 + u(y1 - y0) = y0 + u*dy;
定义裁剪框:
Xmin, Xmax, Ymin, Ymax
点在裁剪框内的条件:
u*Pk <= Qk, k = 1, 2, 3, 4
其中:
p1 = -dX, q1 = x0 - Xmin (left)
p2 = dX, q2 = Xmax - x0 (right)
p3 = -dY, q3 = y0 - Ymin (bottom)
p4 = dY, q4 = Ymax - y0 (top)
2. 交点求解过程:
2.1. 判断某条线段是否平行,既两个点的x或y值是否相等:
· 若相等,则计算该x或y值是否在窗口的对应范围内:
o 若在该窗口范围内,则计算两个交点并返回其值;
o &nbs