图形的裁剪算法就是判断图形是否在屏幕内,如果不在屏幕内就要将其裁剪再显示。它的基础就是直线的裁剪。
在Cohen-Sutherland算法中,我们将每条线段的端点编码为。
对于一个屏幕,将其四边延长,可将空间分为如下九个区域,落入每个区域的端点编码如下:
对于一条线段,其两个端点的编码分别为code1,code2,那么:
①如果 code1 | code 2 == 0, 那么线段完全在窗口内,保留线段(简取)
②如果 code1 & code2 !=0 ,那么线段完全在窗口外,舍弃线段(简弃)
③如果前两个都不满足,那么求出该线段与屏幕直线的交点,按交点把线段分段,然后对每一段进行1,2两个操作。
不足之处:有时不在屏幕内的线段无法通过简弃排除,只能经历复杂的求交运算分段后,再把每一段都舍弃。
对第三种情况的一种改进:中点分割法
对线段P1P2,不断求其中点再对分开的两部分进行判断。
①如果中点不在窗口内,将中点和离窗口远的端点组成的线段舍弃。
②如果中点再窗口内,继续求中点与离窗口远的端点组成的线段的中点。