一、 Liang-Barsky(参数化)算法的思想
梁友栋和Barsky独立地提出了更快的参数化线段裁剪算法,也称为Liany-Barsky(LB)算法,其算法思想如下:
1)从A,B和P1三点中找出最靠近P2的点:点P1。
2)从C,D和P2中找出最靠近P1的点:点C。
3)P1C为直线的可见部分
问题:如何寻找靠P1 ( P2 )最近的点?
二、 Liang-Barsky(参数化)算法的准备工作
1. 直线表示 -- 参数化
2. 窗体边界分类 -- 始边、终边
当dx≥0(或dy≥0)时, 称x=xL(y=yB)为始边, x=xR(y=yT)为终边。
当dx<0(dy<0)时, 称x=xL(y=yB)为终边, x=xR(y=yT)为始边。
三、 Liang-Barsky(参数化)算法的步骤
1. 求出P1P2和两条始边的交点的参数t1’,t1”,令t1 = max(t1’ , t1” ,0 ),则参数 t1 对应的点就是图中A、B和P1三点中最靠近P2的点的参数。
2. 求出P1P2和两条终边的交点的参数 t2’, t2” ,令t2 = min(t2’ , t2” ,1),则参数 t2 对应的点就是图中C、D和P2三点中最靠近P1的点的参数。
3. 当t2>t1时,参数t∈[t1, t2]的线段就是P1P2的可见部分;当t1>t2时,整个直线段为不可见
四、 Liang-Barsky(参数化)算法的实现
1. 求交
2. 确定始边交点集、终边交点集
3. 确定线段可见部分
4. 实现代码
5. 裁剪示例