裁剪
裁剪:确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。
图形裁剪算法,直接影响图形系统的效率。
点的裁剪
假设窗口的左下角坐标为(xL,yB),右上角坐标为(xR,yT),对于给定点P(x,y),则P点在窗口内的条件是要满足下列不等式: xL <= x <= xR 并且yB <= y <= yT 否则,P点就在窗口外。
直线的裁剪
直线段裁剪算法是复杂图形裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。
直接求交算法
Cohen-Sutherland算法
若P1P2完全在窗口内code1=0,且code2=0,则“取”
若P1P2明显在窗口外code1&code2≠0,则“弃”
在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。
中点算法
基本思想:从P0点出发找出离P0最近的可见点,和从P1点出发找出离P1最近的可见点。这两个可见点的连线就是原线段的可见部分。
与Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为三种情况,对前两种情况,进行一样的处理;对于第三种情况,用中点分割的方法求出线段与窗口的交点。A、B分别为距P0 、 P1最近的可见点,Pm为P0P1中点。
梁友栋-barskey算法
设要裁剪的线段是P0P1。 P0P1和窗口边界交于A,B,C,D四点,见图。算法的基本思想是从A,B和P0三点中找出最靠近P1的点,图中要找的点是P0。从C,D和P1中找出最靠近P0的点。图中要找的点是C点。那么P0C就是P0P1线段上的可见部分。
参数化裁剪算法