基本思想:对于每条线段P1P2,分为三种情况处理:
(1)若P1P2完全在窗口内,则显示该线段,简称“取”之;
(2)若P1P2明显在窗口外,则丢弃该线段,简称“弃”之;
(3)若线段既不满足“取”的条件,也不满足“弃”的条件,则把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。
为了使计算机能够快速的判断一条线段与窗口属于何种关系,采用如下编码方法:把窗口的边界延长成直线,窗口平台就分成9个分区,每个区设定一个4位的编码与之对应。
平面上每一条直线的端点根据其所在的区域都可定义出两个编码。
编码(以二进制形式自右向左给出)的意义如下:
(1)第0位:如果端点在窗口左边界左侧,则为1,否则为0;
(2)第1位:如果端点在窗口右边界右侧,则为1,否则为0;
(3)第2位:如果端点在窗口下边界下侧,则为1,否则为0;
(4)第3位:如果端点在窗口上边界上侧,则为1,否则为0。
裁剪一条线段时,先求出端点p1和p2的编码code1和code2:
(1)如果code1和code2均为0,则说明P1和P2均在窗口内,那么线段全部位于窗口内部,应取之。(c)
(2)如果code1和code2经过按位与运算后的结果code1&code2不等于0,说明P1和P2同时在窗口的上方、下方、左方或右方,那么线段全部位于窗口的外部,应弃之。(e,d)
(3)如果上述两种条件均不成立,则可按如下方法处理:求出线段与窗口边界的交点,在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。(a,b,d’)
此方法直观而方便,速度也较快。但是:
(1)由于采用按位与运算,对程序的实现有特殊的要求;
(2)全部舍弃的判断只适合于那些仅在窗口同一侧(后左、或右、或上、或下)的线段。
算法的特点:
(1)特点:用编码方法可快速判断线段--完全可见和显然不可见。
(2)特别适用二种场合:
大窗口场合;
窗口特别小的场合(如:光标拾取图形时,光标看作小的裁剪窗口)
例:根据区域编码裁剪算法对P1P2(P1[80,75],P2[-40,0])进行裁剪,以图解形式说明裁剪的过程(已知:XL=0,XR=100,YB=0,YT=50)。
- 大小: 2.3 KB
- 大小: 11.8 KB
- 大小: 4.2 KB
- 大小: 4.1 KB
- 大小: 4.1 KB
- 大小: 6.5 KB
分享到:
相关推荐
1)理解并掌握Cohen-SutherLand 算法的编码思想; 3. 实验要求 1)将像素网格表现出来,建立网格坐标系; 2)用橡皮筋的形式输入剪裁线段和裁剪窗口; 3)鼠标移动时,显示鼠标当前位置; 4)对于线段裁剪,线段被...
Cohen-Sutherland算法实现直线裁剪 单个CPP文件
已知线段 P1P2的两个端点坐标分别是 P1(-0.4, 0.8)和 P2(0.8, -0.4), 裁剪窗口为(0, 0)~(0.8, 0.8),请使用 Cohen-Sutherland 算法构造一个完成该裁剪任务的完整程序。
直线裁剪的Cohen-Sutherland 算法( 编码裁剪法 )的程序
直线裁剪的Cohen-Sutherland 算法( 编码裁剪法 )
图形学中对线段的剪裁算法Cohen-Sutherland 算法,以及剪裁多边形的算法 Sutherland-Hodgman
Cohen-Sutherland直线裁剪算法 计算机图形学 孔令德 案例源码
Cohen_Sutherland裁剪算法
Cohen-Sutherland、Liang-Barsky、Sutherland-Hodgon算法的PPT演示文档!详尽版!
提出了一种改进Sutherland-Cohen裁剪算法,将完全在窗口内和窗口外的直线判断出来,根据直线端点编码确定辅助线,利用平面上三点的关系判断直线与窗口的哪条边相交。改进的算法使得求交点次数降为最多两次,且避免...
将老师在课堂上讲解的直线段裁剪算法进行具体代码的实现,第一次实验的扩展题目中,已采用了编码法进行直线段裁剪的算法来实现,所以本次实验中我重点研究的是NLN直线段裁剪算法,因为这个算法是对编码法裁剪线段的...
Cohen_Sutherland经典的直线剪切算法。我在学图形学的时候写的。如果大家用得着的话就下回来看看吧。
cohen裁减算法 详细代码过程 c++算法 希望对你有帮助
可运行。环境是vc++6.0 。请看txt必读。谢谢
用Cohen-SutherLand算法和liang _barsky算法进行线段裁剪 2.实验目的 1)理解裁剪的相关概念 2)掌握直线段的一般裁剪过程; 3)理解并掌握Cohen-SutherLand 算法的编码思想; 4)理解并掌握Liang_Barsky...
用Cohen-SutherLand算法和liang _barsky算法进行线段裁剪 2.实验目的 1)理解裁剪的相关概念 2)掌握直线段的一般裁剪过程; 3)理解并掌握Cohen-SutherLand 算法的编码思想; 4)理解并掌握Liang_Barsky...
Cohen—Sutherland线段裁剪算法也叫线段编码裁剪算法,其裁剪对象是线段,裁剪窗口是矩形。裁剪窗口及其延长线把二维平面分成九个区域,每个区域各用一个四位二进制代码标识。算法首先对线段的两个端点按所在区域...
用Cohen-Sutherland算法实现直线段裁剪 C语言 1、裁剪一条线段p1p2时,先求出端点p1和p2的编码code1和code2,如下图所示; 2、若code1=0且code2=0,则该线段在窗口内,取之;若code1和code2 按位进行与运算,其结果...
用Cohen-SutherLand算法和liang _barsky算法进行线段裁剪 2.实验目的 1)理解裁剪的相关概念 2)掌握直线段的一般裁剪过程; 3)理解并掌握Cohen-SutherLand 算法的编码思想; 4)理解并掌握Liang_Barsky...
用Cohen-SutherLand算法和liang _barsky算法进行线段裁剪 2.实验目的 1)理解裁剪的相关概念 2)掌握直线段的一般裁剪过程; 3)理解并掌握Cohen-SutherLand 算法的编码思想; 4)理解并掌握Liang_Barsky...