光栅图形学(三)——梁友栋-Barskey剪裁算法
一、问题转换
- 直线的参数方程
x = x 1 + u ( x 2 − x 1 ) y = y 1 + u ( y 2 − y 1 ) \begin{aligned} &x = x_1+u(x_2-x_1) \\ &y=y_1+ u(y_2-y_1) \end{aligned} x=x1+u(x2−x1)y=y1+u(y2−y1)
其中 0 ≤ u ≤ 1 0\le u \le 1 0≤u≤1。对于直线上的一点 ( x , y ) (x,y) (x,y),若它在窗口内则有
w x l ≤ x 1 + u ( x 2 − x 1 ) ≤ w x r w x b ≤ y 1 + u ( y 2 − y 1 ) ≤ w y t \begin{aligned} &wxl \le x_1+u(x_2-x_1)\le wxr \\ &wxb \le y_1+u(y_2-y_1) \le wyt \end{aligned} wxl≤x1+u(x2−x1)≤wxrwxb≤y1+u(y2−y1)≤wyt - 条件方程转换
u ( x 1 − x 2 ) ≤ x 1 − w x l p 1 = − ( x 2 − x 1 ) q 1 = x 1 − w x l u ( x 2 − x 1 ) ≤ w x r − x 1 p 2 = x 2 − x 1 q 2 = w x r − x 1 u ( y 1 − y 2 ) ≤ y 1 − w y b p 3 = − ( y 2 − y 1 ) q 3 = y 1 − w y b u ( y 2 − y 1 ) ≤ w y t − y 1 p 4 = y 2 − y 1 q 4 = w y t − y 1 \begin{aligned} &u(x_1-x_2) \le x_1 - wxl \quad p_1 = -(x_2-x_1) \quad q_1=x_1-wxl\\ &u(x_2-x_1) \le wxr - x_1 \quad p_2 = x_2 - x_1 \quad q_2 = wxr - x_1 \\ &u(y_1 - y_2) \le y_1 - wyb \quad p_3=-(y_2-y_1) \quad q_3 = y_1 - wyb \\ &u(y_2 - y_1)