计算机图形学5.5裁剪算法.ppt
《计算机图形学5.5裁剪算法.ppt》由会员分享,可在线阅读,更多相关《计算机图形学5.5裁剪算法.ppt(24页珍藏版)》请在第壹文秘上搜索。
1、5.5 5.5 裁剪算法裁剪算法 5.1.1 5.1.1 线段裁剪算法线段裁剪算法 5.1.2 5.1.2 多边形裁剪算法多边形裁剪算法 确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形,这个选择过程称为裁剪裁剪。该显示区被称为裁剪窗口裁剪窗口。5.5.1 线段裁剪算法线段裁剪算法 假设矩形窗口的左下角坐标为(xL,yB),右上角坐标为(xR,yT),则点P(x,y)在窗口内的条件是:(x(xL L,y,yB B)(x(xR R,y,yT T)P点的位置点的位置是裁剪中最基本的问题是裁剪中最基本的问题否则,P点就在窗口外。满足:xL=x=xR 和 yB=
2、y=yTl 直线段裁剪算法是复杂图形裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。l 常用的线段裁剪方法 Cohen-Sutherland、中点分割算法、梁友栋barskey算法。5.5.1 线段裁剪算法线段裁剪算法快速判断情形(1)(2),对于情形(3),设法减少求交次数和每次求交时所需的计算量。abc裁剪线段与窗口的关系:裁剪线段与窗口的关系:(1)线段完全可见;(2)显然不可见;(3)线段至少有一端点在窗口之外,但非显然不可见。如何提高裁剪效率?如何提高裁剪效率?线段裁剪有多种算法,但基本思想都是:(1)线段是否全不在窗口内,是则结束。(2)线段是否
3、全在窗口内,是则显示该线段,结束。(3)计算该线段与窗口边界延长线的交点,以此将线段分成两部分;丢弃不可见的部分;对剩下的部分转(2)。它又称为Sutherland-Cohen分割线算法.5.5.1.1 Cohen-Sutherland 端点编码算法将矩形窗口的四边分别延长后,得到九个区域,每一个区域都用一个四位二进制数标识,直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界的位置。1.1.线段的端点编码线段的端点编码 它是最早最流行的裁剪算法,可以扩展为三维裁剪.区域码为:区域码为:上上 下下 右右 左左 X X X XX X X X任何位赋值为任何位赋值为1 1,代
4、表端点落在相应的位置上,否,代表端点落在相应的位置上,否则该位为则该位为0 0。这一编码的这一编码的特点特点是对于窗口的某一条是对于窗口的某一条边外侧的三个区域的四位编码中有一位全为边外侧的三个区域的四位编码中有一位全为1。线段的端点编码线段的端点编码100110001010000101010010011001000000 上上 下下 右右 左左 P1 Y=YT P2 Y=YBP4P3X=XL X=XR线段的各端点编码?线段的各端点编码?对于三维裁剪对于三维裁剪,需要需要6位编码。位编码。(1010)(1001)P3:0110 P1:1001 P4:&1010 P2:&0010 0010 00
5、00(0110)(0010)一旦给定所有的线段端点的区域码,就可以快速判断哪条直线完全在剪取窗口内,哪条直线完全在窗口外。所以得到一个规律:否则,在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。若P1P2明显在窗口外外:code1&code20,则“弃弃”若P1P2完全在窗口内内:code1=0,且code2=0,则“取取”(1)若线段若线段P1P2两端点的四位编码均为两端点的四位编码均为0,则两端点均在窗口内则两端点均在窗口内,该线段完全可见该线段完全可见,显示该线段显示该线段,算法结束算法结束;P6P5P2P1P4P3Cohen-Sutherland端点编码
6、算法(3)若线段两端点的四位编码按位若线段两端点的四位编码按位“与与”结果为结果为0,找到找到P1P2在窗口外的一个端点在窗口外的一个端点P1(或或P2),用窗口相应的边与用窗口相应的边与P1P2的交的交点取代该端点点取代该端点P1(或(或P2),返回返回(1)步。步。(2)若线段若线段P1P2两端点的四位编码按位两端点的四位编码按位“与与”结果为非结果为非0,则则该线段完全不可见该线段完全不可见,算法结束。算法结束。裁剪一条线段时,先求出端点裁剪一条线段时,先求出端点p1和和p2的编码的编码code1和和code2,然后然后 (1)若若code1|code2=0,对直线段应简取之。,对直线段
7、应简取之。(2)若若code1&code20,对直线段可简弃之。,对直线段可简弃之。(3)若上述两条件均不成立。则需求出直线段与窗口边界若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。段完全被舍弃或者找到位于窗口内的一段线段为止。4.求交:假定直线的端点坐标为求交:假定直线的端点坐标为(x1,y1)和和(x2,y2)(1)左、右边界交点的计算:左
8、、右边界交点的计算:y=y1+k(xx1);(2)上、下边界交点的计算:上、下边界交点的计算:x=x1+(yy1)/k。Cohen-Sutherland端点编码算法特点:用编码方法可快速判断线段的完全可见和显然不可见。优点:简单,易于实现。如何求窗口边界与线段如何求窗口边界与线段P1P2的交点的交点?计算线段计算线段P1(x1,y1)P2(x2,y2)与窗口边界的交点与窗口边界的交点CodeCode代表线段某个端点的编码。代表线段某个端点的编码。if(LEFT&code!=0)if(LEFT&code!=0)x=XL;x=XL;y=y1+(y2-y1)y=y1+(y2-y1)*(XL-x1)/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 5.5 裁剪 算法