收藏 分享(赏)

计算机图形学 5.5裁剪算法.ppt

上传人:HR专家 文档编号:11808491 上传时间:2021-01-20 格式:PPT 页数:24 大小:353.50KB
下载 相关 举报
计算机图形学 5.5裁剪算法.ppt_第1页
第1页 / 共24页
计算机图形学 5.5裁剪算法.ppt_第2页
第2页 / 共24页
计算机图形学 5.5裁剪算法.ppt_第3页
第3页 / 共24页
计算机图形学 5.5裁剪算法.ppt_第4页
第4页 / 共24页
计算机图形学 5.5裁剪算法.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、5.5 裁剪算法 5.1.1 线段裁剪算法 5.1.2 多边形裁剪算法,确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形,这个选择过程称为裁剪。 该显示区被称为裁剪窗口。,5.5.1 线段裁剪算法,假设矩形窗口的左下角坐标为(xL,yB),右上角坐标为(xR,yT),则点P(x,y)在窗口内的条件是:,(xL,yB ),(xR,yT ),P,点的位置是裁剪中最基本的问题,否则,P点就在窗口外。,满足: xL = x = xR 和 yB = y = yT,直线段裁剪算法是复杂图形裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线段的裁剪

2、问题。 常用的线段裁剪方法 Cohen-Sutherland、 中点分割算法、 梁友栋barskey算法。,5.5.1 线段裁剪算法,快速判断情形(1)(2),对于情 形(3),设法减少求交次数和 每次求交时所需的计算量。,裁剪线段与窗口的关系:,(1) 线段完全可见; (2) 显然不可见; (3) 线段至少有一端点在窗口之外,但非显然不可见。,如何提高裁剪效率?,线段裁剪有多种算法,但基本思想都是:,(1)线段是否全不在窗口内,是则结束。 (2)线段是否全在窗口内,是则显示该线段,结束。 (3)计算该线段与窗口边界延长线的交点,以此将线段分成两部分;丢弃不可见的部分;对剩下的部分转(2)。,

3、它又称为Sutherland-Cohen分割线算法.,5.5.1.1 Cohen-Sutherland 端点编码算法,将矩形窗口的四边分别延长后,得到九个区域,每一个区域都用一个四位二进制数标识,直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界的位置。,1.线段的端点编码,它是最早最流行的裁剪算法, 可以扩展为三维裁剪.,区域码为: 上 下 右 左 X X X X任何位赋值为1,代表端点落在相应的位置上,否则该位为0。这一编码的特点是对于窗口的某一条边外侧的三个区域的四位编码中有一位全为1。,线段的端点编码,上 下 右 左 P1 Y=YT P2 Y=YB,P4,P3,

4、X=XL X=XR,线段的各端点编码?,对于三维裁剪,需要6位编码。,(1010),(1001),P3: 0110 P1: 1001 P4:,Cohen-Sutherland端点编码算法,(3)若线段两端点的四位编码按位“与”结果为0, 找到P1P2在窗口外的一个端点P1(或P2),用窗口相应的边与P1P2的交点取代该端点P1(或P2), 返回(1)步。,(2) 若线段P1P2两端点的四位编码按位“与”结果为非0,则该线段完全不可见,算法结束。,裁剪一条线段时,先求出端点p1和p2的编码code1和code2,然后(1)若code1|code2=0,对直线段应简取之。(2)若code1 P1:

5、(-1,1/2); 编码(0000) 判别知非完全可见,且P1在窗口内, 因此交换P1P2得新线段P1P2; P1:(1/2, 3/2);编码 (1000) P2:(-1, 1/2); 编码 (0000),(3) 求上边交点,得 P1(-1/4, 1) P2(-1, 1/2); 并编码, 两端点编码全部为0, 线段完全可见,程序结束,P1,x=x1+(y-y1)*(x2-x1)/(y2-y1) y=y1+(x-x1)*(y2-y1)/(x2-x1),多边形的裁剪,多边形的裁剪,对多边形的裁剪不等于把多边形的每一条边进行裁剪。 因为在图形学中,多边形被认为是一个封闭的区域,它把平面分为多边形内和

6、多边形外。,多边形的裁剪,对一个多边形的裁剪结果仍要求是多边形,且原来是多边形内的点也在裁剪后的多边形内。 一部分窗口的边界可能成为裁剪后的多边形的边界,一个凹多边形裁剪后可能成为几个多边形。 多边形裁剪算法的输出应该是定义裁剪后的多边形边界的顶点序列。于是,需要构造能产生一个或多个封闭区域的多边形裁剪算法。,对多边形裁剪的Sutherland-Hodgman算法是一种简便的方法,只要对多边形用窗口的四条边依次裁剪四次,便可得到裁剪后的多边形。,5.1 .2 Sutherland-Hodgman逐次多边形裁剪算法,Sutherland-Hodgman基本思想,基本思想:是一次用窗口的一条边裁剪

7、多边形。 考虑窗口的一条边以及延长线构成的裁剪线该线把平 面分成两个部分:可见一侧;不可见一侧 多边形的各条边的两端点S、P。它们与裁剪线的位置 关系只有四种:,Sutherland-Hodgman基本思想,假设当前处理的边为SP,顶点S在上一轮中已经处 理。 对于情况(1)仅输出顶点P; 情况(2)输出0个顶点; 情况(3)输出线段SP与裁剪线的交点I; 情况(4)输出线段SP与裁剪线的交点I和终点P,是否第一点?,取点P,SP和e相交?,计算SP和 e的交点I,输出I,S P,F P,S在e的可见侧,退出,输出S,(a),Sutherland-Hodgman算法的框图,是,是,否,是,否,

8、否,设封闭多边形的顶点为P1,P2,Pn,框图中e是表示窗口的四条边中正在裁剪的一条边, 每次裁剪时第一个点存放在F中,以便对最后一条边裁剪时使用。 用图(a)中的算法对边P1P2, P2P3, Pn-1Pn作裁剪。,图(a),用图(b)中的算法对最后一条边PnP1作裁剪。裁剪好一条边便输出一条边。,SP和e相交?,计算SP和 e的交点I,输出I,退出,(b),是,否,取点F为P,图(b),上述算法仅用一条裁剪边对多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入。 裁剪结果的顶点构成:裁剪边内侧的原顶点;多边形的边与裁剪边的交点。顺序连接。,流水线过程(左上右下): 亦称逐边裁剪算法,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 其他相关文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报