Liang-Barsky算法剪裁实例
1:写出线段头尾横纵坐标、窗口左下右上坐标
A(-2,6) x1=-2,y1=6;
B(7,-2) x2=7,y2=-2;
窗口:wx1=0,wxr=4,wyb=0,wyt=3;
2:求AB的▲x和▲y,Pi,qi,Ui=qi/Pi
P1=-▲x=-(7+2)=-9 q1=w1-wxl=-2 U1=2/9
P2=▲x=(7+2)=9 q2=wxr-xl=6 U2=2/3
P3=-▲y=-(-2-6)=8 q3=y1-wyb=6 U3=3/4
P2=▲y=(-2-6)=-8 q4=wyt-y1=6 U4=3/8
3:在P小于零的里面选大的在P大于零的里面选小的
Umax=max(0,Uk|Pk<0)=max(0,2/9,3/8)=3/8
Umin=min(1,Uk|Pk>0)=min(1,2/3,3/4)=2/3
4:将Umax和Umin带入
x=x1+U*(x2-x1)
y=y1+U*(y2-y1)
算出两交点的横纵坐标:xmax=11/8,xmin=4;
ymax=3,ymin=2/3;
新的A'(11/8,3)B'(4,2/3)即为要取的线段。