二维图形的裁剪讲稿.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《二维图形的裁剪讲稿.ppt》由会员分享,可在线阅读,更多相关《二维图形的裁剪讲稿.ppt(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于二维图形的裁剪关于二维图形的裁剪第一页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2 2二维裁剪二维裁剪识别图形在指定区域内和区域外的部分的过程称为裁剪算法,简称识别图形在指定区域内和区域外的部分的过程称为裁剪算法,简称裁剪(裁剪(clipping)二维窗口是投影平面上的一个矩形。一般来说,这个矩形的边和投二维窗口是投影平面上的一个矩形。一般来说,这个矩形的边和投影平面上的坐标轴平行,图形在窗口内的部分被显示出来,窗口外影平面上的坐标轴平行,图形在窗口内的部分被显示出来,窗口外的部分被裁剪掉了。平面上的图形受该矩形的裁剪称为二维裁剪。的部分
2、被裁剪掉了。平面上的图形受该矩形的裁剪称为二维裁剪。第二页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院3 3裁剪的应用裁剪的应用从定义的场景中抽取用于观察的部分从定义的场景中抽取用于观察的部分在三维视图中识别出可见面在三维视图中识别出可见面防止线段或对象的边界混淆防止线段或对象的边界混淆用实体造型来创建对象用实体造型来创建对象显示多窗口的环境显示多窗口的环境允许选择图形的一部分来进行拷贝、移动或删除等绘图操作允许选择图形的一部分来进行拷贝、移动或删除等绘图操作裁剪算法类型裁剪算法类型图形裁剪与窗口图形裁剪与窗口视图变换的先后视图变换的先后窗口边
3、界裁剪窗口边界裁剪视区边界裁剪视区边界裁剪图形生成与裁剪先后图形生成与裁剪先后先生成后裁剪先生成后裁剪先裁剪后生成先裁剪后生成第三页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院4 4点的裁剪点的裁剪图形裁剪中的最基本的问题。图形裁剪中的最基本的问题。假设裁剪窗口为一个在标准位置的矩形,即边与坐标轴平行的矩形,由上假设裁剪窗口为一个在标准位置的矩形,即边与坐标轴平行的矩形,由上(y=ymin)、下()、下(y=ymax)、左()、左(x=xmin)、右()、右(x=xmax)四条边描)四条边描述。述。点点(x,y)在窗口内的充分必要条件是:在窗口
4、内的充分必要条件是:裁剪窗口(裁剪窗口(Xmin,Xmax,Ymin,Ymax)是世界坐标系的窗口边界或视区边界是世界坐标系的窗口边界或视区边界应用举例应用举例爆炸场景或海面泡沫的显示爆炸场景或海面泡沫的显示问题:对于任何多边形窗口,如何判别?问题:对于任何多边形窗口,如何判别?(xmin,ymin)(xmax,ymax)第四页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院5 5直线段裁剪直线段裁剪直线段裁剪算法是复杂图形裁剪的基础。复杂的曲线可以通过折直线段裁剪算法是复杂图形裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线
5、段的裁剪问题。线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。裁剪的目的裁剪的目的判断图形元素是否落在裁剪窗口之内并找出其位于内部的部分判断图形元素是否落在裁剪窗口之内并找出其位于内部的部分裁剪处理的基础裁剪处理的基础图元关于窗口内外关系的判别图元关于窗口内外关系的判别图元与窗口的求交图元与窗口的求交假定条件假定条件矩形裁剪窗口:矩形裁剪窗口:xmin,xmaxXymin,ymax待裁剪线段:待裁剪线段:第五页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院6 6直线段裁剪直线段裁剪待裁剪线段和窗口的关系待裁剪线段和窗口的关系(1)完全落在窗口
6、内,线段完全可见)完全落在窗口内,线段完全可见(2)完全落在窗口外,显然不可见)完全落在窗口外,显然不可见(3)与与窗窗口口边边界界相相交交,线线段段至至少少有有一一端端点点在在窗窗口口之之外外,但但非非显显然然不不可见可见第六页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院7 7要确定一条直线段上位于窗口内的可见段,只须要确定一条直线段上位于窗口内的可见段,只须求出它的两个位于窗口内的可见端点即可。求出它的两个位于窗口内的可见端点即可。算法的基本思想算法的基本思想把所有的直线按照它和窗口的关系分类,不同的直把所有的直线按照它和窗口的关系分类,不
7、同的直线使用不同的处理方法确定其可见部分。线使用不同的处理方法确定其可见部分。第七页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院8 8为提高效率,算法设计时应考虑:为提高效率,算法设计时应考虑:(一)快速判断情形一)快速判断情形(1)(2);(二二)设法减少情形设法减少情形(3)求交次数和每次求交时所需的计算求交次数和每次求交时所需的计算量。量。直线裁剪算法的主要步骤:直线裁剪算法的主要步骤:首先将不需要裁剪的直线挑出,并删去其中在窗外的直线;首先将不需要裁剪的直线挑出,并删去其中在窗外的直线;其次,对其余直线,逐条与窗框求交点,并将窗外部分删
8、去其次,对其余直线,逐条与窗框求交点,并将窗外部分删去第八页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院9 9实交点实交点是直线段与窗口矩形边界的交点。是直线段与窗口矩形边界的交点。虚虚交交点点则则是是直直线线段段与与窗窗口口矩矩形形边边界界延延长长线线或或直直线线段段的的延长线与窗口矩形边界的交点。延长线与窗口矩形边界的交点。第九页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1010直线的剪裁算法直线的剪裁算法直接求交算法直接求交算法矢量裁剪法矢量裁剪法Cohen-Sutherland算法算法
9、中点分割算法中点分割算法梁友栋梁友栋Barsky算法算法Nicholl-Lee-Nicholl算法算法第十页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1111直接求交算法直接求交算法直线与窗口边直线与窗口边都写成参数形都写成参数形式,求参数值。式,求参数值。第十一页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1212矢量裁剪法矢量裁剪法算法思想算法思想先从线段的一个端点出发进行判断或进行求交运算,所得交点坐标先从线段的一个端点出发进行判断或进行求交运算,所得交点坐标保存在(保存在(xs,ys)
10、中,然后再从线段的另一个端点出发用前面的)中,然后再从线段的另一个端点出发用前面的判断及其求交运算求得交点坐标(判断及其求交运算求得交点坐标(x,y),最后只输出两个交点),最后只输出两个交点间的线段。间的线段。用窗口的四条边界的直线将窗口分为用窗口的四条边界的直线将窗口分为9个区。个区。012345678(x2,y2)ybytxlxr(x1,y1)第十二页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1313排斥性测试排斥性测试若线段满足下述四个条件之一时:若线段满足下述四个条件之一时:max(x1,x2)xlmin(x1,x2)xrmax(y
11、1,y2)ybmin(y1,y2)yt则线段必定位于窗口之外,无输出线段。则线段必定位于窗口之外,无输出线段。包含性测试包含性测试 若线段满足:若线段满足:xlx1 xr,yby1 yt,则线段的始点在则线段的始点在0区,区,也即线段可见段的起点为:也即线段可见段的起点为:xs=x1 ,ys=y1第十三页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1414求交点,并判断求交点,并判断I.若若x1xl,则:则:线段的起点坐标可能线段的起点坐标可能位于位于3区、区、4区、区、5区。区。而新起点的坐标可能在而新起点的坐标可能在直线直线y=yb和线段的
12、交点上和线段的交点上直线直线y=yt和线段的交点上和线段的交点上直线直线x=xl和线段的交点上和线段的交点上012345678(x1,y1)(x2,y2)ybytxlxr第十四页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1515第一种情况:第一种情况:此时,若此时,若xlxsxr则则(xsys)为有效新起点。为有效新起点。第二种情况:第二种情况:此时,若此时,若xlxsxr则则(xsys)为有效新起点。为有效新起点。第三种情况:第三种情况:此时,若此时,若ybys yt 则则(xs ys)为有效新起点。为有效新起点。三种情况都不满足,则此线段
13、不在窗口区内。三种情况都不满足,则此线段不在窗口区内。第十五页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1616II.若若x1xr线段的起点坐标可能线段的起点坐标可能位于位于6区、区、7区、区、8区。区。而新起点的坐标可能在而新起点的坐标可能在直线直线y=yb和线段的交点上和线段的交点上直线直线y=yt和线段的交点上和线段的交点上直线直线x=xr和线段的交点上和线段的交点上012345678(x1,y1)ybytxlxr第十六页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1717第一种情况:第
14、一种情况:此时,若此时,若xlxsxr则则(xsys)为有效新起点。为有效新起点。第二种情况:第二种情况:此时,若此时,若xlxsxr则则(xsys)为有效新起点。为有效新起点。第三种情况:第三种情况:此时,若此时,若ybysyt则则(xsys)为有效新起点。为有效新起点。若此三种情况都不满足,则此线段不在窗口区内。若此三种情况都不满足,则此线段不在窗口区内。第十七页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1818III 若若Xl=X=Xr线段的起点坐标可能位于线段的起点坐标可能位于1区区和和2区。区。而新起点的坐标可能在而新起点的坐标可能
15、在直线直线y=yb和线段的交点上和线段的交点上直线直线y=yt和线段的交点上和线段的交点上012345678(x1,y1)ybytxlxr第十八页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院1919第一种情况:第一种情况:此时,若此时,若xlxs xr 则则(xs ys)为有效新起点。为有效新起点。第二种情况:第二种情况:此时,若此时,若xlxs xr 则则(xs ys)为有效新起点。为有效新起点。若此二种情况都不满足,则此线段不在窗口区内。若此二种情况都不满足,则此线段不在窗口区内。使用同样的方法,可得到直线在窗口的另一个可见端使用同样的方法
16、,可得到直线在窗口的另一个可见端点。点。第十九页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2020Cohen-Sutherland 算法算法(编码算法编码算法)基本思想:基本思想:Cohen-Sutherland直线剪裁算法以区域编码为基础,将窗口及其周围直线剪裁算法以区域编码为基础,将窗口及其周围的八个方向以的八个方向以4 bit的二进制数进行编码。对每条直线段的二进制数进行编码。对每条直线段p0(x0,y0)p1(x1,y1)分三种情况处理:分三种情况处理:(1)直线段完全可见,直线段完全可见,“简取简取”之。之。(2)直线段完全不可见,
17、直线段完全不可见,“简弃简弃”之。之。(3)直线段既不满足直线段既不满足“简取简取”的条件,的条件,也不满足也不满足“简弃简弃”的条件,需要对的条件,需要对直线段按交点进行分段,分段后重复上述处理。直线段按交点进行分段,分段后重复上述处理。第二十页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2121算法步骤:算法步骤:第一步第一步判别线段两端点是否都落在窗口内,判别线段两端点是否都落在窗口内,如果是,则线段完全可见;否则进入第二步;如果是,则线段完全可见;否则进入第二步;第二步第二步判别线段是否为显然不可见,判别线段是否为显然不可见,如果是,则
18、裁剪结束;否则进行第三步;如果是,则裁剪结束;否则进行第三步;第三步第三步求线段与窗口边延长线的交点,求线段与窗口边延长线的交点,这个交点将线段分为两段,其中一段显然不可见,丢弃。对余下的这个交点将线段分为两段,其中一段显然不可见,丢弃。对余下的另一段重新进行第一步,第二步判断,直至结束另一段重新进行第一步,第二步判断,直至结束裁剪过程是递归的。裁剪过程是递归的。第二十一页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2222第二十二页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2323Cohen
19、-SutherLand算法算法(编码算法编码算法)特点:对显然不可见线段的快速判别特点:对显然不可见线段的快速判别编码方法:延长窗口的四条边线,由窗口四条边所在直线编码方法:延长窗口的四条边线,由窗口四条边所在直线把二维平面分成把二维平面分成9个区域,每个区域赋予一个四位编码,个区域,每个区域赋予一个四位编码,CtCbCrCl,上下右左;,上下右左;左域左域右域右域上上域域下下域域内域内域第二十三页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2424第一位第一位1:点处于上边框线的上边;:点处于上边框线的上边;第二位第二位1:点处于下边框线的下
20、边;:点处于下边框线的下边;第三位第三位1:点处于右边框线的右边;:点处于右边框线的右边;第四位第四位1:点处于左边框线的左边;:点处于左边框线的左边;显然:显然:如果某线段的两端点的两个四位代码全为零时那么该线段完全位于窗口内,如果某线段的两端点的两个四位代码全为零时那么该线段完全位于窗口内,即全为即全为“0000”,可直接保留;,可直接保留;如果两端点的标识码的逻辑与(按位乘)运算,结果不为零,那么该线段必位于如果两端点的标识码的逻辑与(按位乘)运算,结果不为零,那么该线段必位于窗口外,可直接舍弃。窗口外,可直接舍弃。否则,这一线段可能与窗口相交。此时,需要对线段进行再分割,即找到与否则,
21、这一线段可能与窗口相交。此时,需要对线段进行再分割,即找到与窗口边线的一个交点,根据交点位置,赋予四位二进制编码,然后再进行上窗口边线的一个交点,根据交点位置,赋予四位二进制编码,然后再进行上述测试,测试结果是必有一段在窗口之外,可被排除,另一段再重复上述处述测试,测试结果是必有一段在窗口之外,可被排除,另一段再重复上述处理过程。理过程。直到全部线段均被舍弃或被保留为止。直到全部线段均被舍弃或被保留为止。第二十四页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2525Cohen-SutherLand算法算法(编码算法编码算法)端点编码:定义为它所
22、在区域的编码端点编码:定义为它所在区域的编码结论:当线段的两个端点的编码的结论:当线段的两个端点的编码的逻辑逻辑“与与”非零非零时时 ,线,线段为显然不可见的段为显然不可见的 第二十五页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2626求交测试顺序固定求交测试顺序固定(左上右下)左上右下)最坏情形,线段求交四次。最坏情形,线段求交四次。Cohen-SutherLand算法算法(编码算法编码算法)对于那些非完全可见、又非显然不可见的线段,需要对于那些非完全可见、又非显然不可见的线段,需要求交求交(如,线段(如,线段AD)AD),求交前,求交前先
23、测试先测试与窗口哪条边所在与窗口哪条边所在直线有交?直线有交?(按序判断端点编码中各位的值按序判断端点编码中各位的值ClCtCrCbClCtCrCb)第二十六页,讲稿共九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院27271)特点:)特点:容易将不需要裁剪的直线挑出。容易将不需要裁剪的直线挑出。规则是:如果一条直线的两端在同一区域,则该直线不需要裁剪,否则该直规则是:如果一条直线的两端在同一区域,则该直线不需要裁剪,否则该直线为可能裁剪直线。线为可能裁剪直线。对可能裁剪的直线缩小了与之求交的边框范围。对可能裁剪的直线缩小了与之求交的边框范围。规则是:如果
24、直线的一个端点在上(下、左、右)域,则此直线与上边框求规则是:如果直线的一个端点在上(下、左、右)域,则此直线与上边框求交,然后删去上边框以上的部分。该规则对直线的另一端点也适用。一条直交,然后删去上边框以上的部分。该规则对直线的另一端点也适用。一条直线至多只需要与两条边框求交。线至多只需要与两条边框求交。用编码方法可快速判断线段用编码方法可快速判断线段-完全可见和显然不可见。完全可见和显然不可见。2)特别适用二种场合:)特别适用二种场合:大窗口场合;大窗口场合;窗口特别小的场合,如光标拾取图形时窗口特别小的场合,如光标拾取图形时,光标看作小的裁剪窗口。光标看作小的裁剪窗口。第二十七页,讲稿共
25、九十三页哦2022/9/252022/9/25计算机科学与技术学院计算机科学与技术学院2828例题:例题:例题:例题:P P1 1P P2 2P1:(-3/2,1/6);编码;编码(0001)P2:(1/2,3/2);编码;编码(1000)(2)求右边交点,得求右边交点,得 P1(1,11/6)P2(-1,1/2);并编码,并编码,判别之不可见判别之不可见(1)求左边交点,得求左边交点,得P1P2;P1:(-1,1/2);编码编码(0000)判别知非完全可见,且判别知非完全可见,且P1在窗口内,在窗口内,因此交换因此交换P1P2得新线段得新线段P1P2;P1:(1/2,3/2);编码;编码(1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二维 图形 裁剪 讲稿
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内