[图形学]图形裁剪_Cohen-Sutherland算法

时间:2022-04-09 16:33:50

        图形的裁剪算法就是判断图形是否在屏幕内,如果不在屏幕内就要将其裁剪再显示。它的基础就是直线的裁剪。

        在Cohen-Sutherland算法中,我们将每条线段的端点编码为[图形学]图形裁剪_Cohen-Sutherland算法

        [图形学]图形裁剪_Cohen-Sutherland算法

        对于一个屏幕,将其四边延长,可将空间分为如下九个区域,落入每个区域的端点编码如下:

        [图形学]图形裁剪_Cohen-Sutherland算法

 

          对于一条线段,其两个端点的编码分别为code1code2,那么:

        ①如果 code1 | code 2 == 0, 那么线段完全在窗口内,保留线段(简取)

        ②如果 code1 & code2 =0 ,那么线段完全在窗口外,舍弃线段(简弃)

        ③如果前两个都不满足,那么求出该线段与屏幕直线的交点,按交点把线段分段,然后对每一段进行12两个操作。

 

        不足之处:有时不在屏幕内的线段无法通过简弃排除,只能经历复杂的求交运算分段后,再把每一段都舍弃。

        对第三种情况的一种改进:中点分割法

        对线段P1P2,不断求其中点再对分开的两部分进行判断。

       ①如果中点不在窗口内,将中点和离窗口远的端点组成的线段舍弃。

       ②如果中点再窗口内,继续求中点与离窗口远的端点组成的线段的中点。