直线的裁剪: 梁友栋-Barsky算法(Liang-Barsky算法)
1. 算法的基本思想
以直线的参数方程为基础,对不同情况下的裁剪求得相应的参数值。
2. 算法的推导过程
情形一 pk=0
(1)p1=p2=0
若q1<0或q2<0,则可删除直线段
若q1>=0且q2>=0,则进一步判断
u=qk/pk(k=3,4)
令 u1=max(0,u|pk<0)
u2=min(1,u|pk>0)
若u1>u2,则可删除直线段
若u1<=u2,将u1,u2代入直线方程,得到直线段的两个可见端点。
(2)p3=p4=0
若q3<0或q4<0,则可删除直线段
若q3>=0且q4>=0,则进一步判断
u=qk/pk(k=1,2)
令 u1=max(0,u|pk<0)
u2=min(1,u|pk>0)
若u1>u2,则可删除直线段
若u1<=u2,将u1,u2代入直线方程,得到直线段的两个可见端点。
情形二 pk不为0
u=qk/pk(k=1,2,3,4)
令 u1=max(0,u|pk<0,u|pk<0)
u2=min(1,u|pk>0, u|pk>0)
若u1>u2,则可删除直线段
若u1<=u2,将u1,u2代入直线方程