友情提示:同学您好,此页面仅供预览,在此页面学习不会被统计哦! 请进入学习空间后选择课程学习。

 Cohen-Sutherland 算法 (编码算法),由Dan Cohen和Ivan Sutherland在1974年提出。

一、 Cohen-Sutherland 算法 思想

对每条线段分三种情况处理

1)若线段完全在窗口之内,则显示该线段,称为“取”;

2)若线段明显在窗口之外,则丢弃该线段,称为“弃”

3)求线段与窗口边界所在直线交点,该点把线段分割为两段。其中一段完全在窗口之外,可弃之;对另一段则重复上述处理。

问题:根据算法思想,如何快速判定如下所示直线的取、弃、裁的情况?


二、 Cohen-Sutherland 算法的编码与分区

对于线段任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0(上下右左)。

             

给定直线端点的编码后,根据端点编码,决定直线的取、弃、裁三种情况:

1)取之:线段在窗口内部. 端点的编码code1与code2都为0000,不需要裁剪


2)弃之:端点编码都不为0000. code1与code2按位与不为0,整条线段都在某边界的外侧,应被裁剪掉


3)裁之:端点编码都不为0000. code1与code2都在窗体外部;或者至少一个端点在窗体外部。 


三、 Cohen-Sutherland 算法中直线求交

定义窗体:



四、  Cohen-Sutherland 算法实现

1. 算法流程图

2. 编码实现


3. 裁剪实现

4. 裁剪示例