版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 裁剪( Clipping),裁剪:确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。 在使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的只是图的一部分。,3.1 线段裁剪,线段裁剪算法是复杂图元裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为线段的裁剪问题。 所谓线段裁剪就是把线段位于裁剪区域的部分找出来,而把位于裁剪区域之外的部分去掉。 最常见的裁剪区域是长方形。,裁剪前,裁剪后,线段裁剪的基本思想,判断线段与窗口的位置关系: 1确定直线是完全可见; 2部分可见; 3还是完全不可见。
2、 对部分可见线段,求出它与窗口边界的交点,并将窗口内的线段输出。,Cohen-Sutherland线段裁剪算法,1 基本思想 该算法也称为编码算法,首先对线段的两个端点按所在的区域进行分区编码,根据编码可以迅速地判明全部在窗口内的线段和全部在某边界外侧的线段。只有不属于这两种情况的线段,才需要求出线段与窗口边界的交点,求出交点后,舍去窗外部分。 对剩余部分,把它作为新的线段看待,又从头开始考虑。,2 区域编码 Cohen-Sutherland算法针对水平长方形区域(Upright rectangle)。 长方形的四条边所在的四条直线把整个平面区域分成9个部分。,我们用四个二进制位来描述9个区域
3、进行编码.目的是能快速地确定线段所在区域。 第1位:1,位于窗口的左边;0,其它 第2位:1,位于窗口的右边;0,其它 第3位:1,位于窗口的下方;0,其它 第4位:1,位于窗口的上方;0,其它,长方形划分的9个区域有如下编码:,3 区域测试 对于一条直线段, 设其两端点的上述编码为 和 。 那么: (i) 时线段位于长方形区域内; (ii) 和 的位与不为0,则线段位于窗口外。 (iii)其它情形需要进一步测试。,可以通过端点区域码直接测试的例子:,不能直接测试的例子:,4 线段求交 对于不能马上判定位于窗口外还是窗口内的线段,需要进行求交(裁剪)。 具体实现时,可按编码顺序(即左、右、下、
4、上)对窗口的边界逐个次测试,如与线段相交则裁剪。,例 (i)线段位于左边界的两边(两端点的第1位不同),求出交点,并把左边的线段去掉。,例 (ii)线段位于右边界的两边(两端点的第2位不同),求出交点,并把右边的线段去掉。,例 (iii)线段位于下边界的两边(两端点的第3位不同),求出交点,并把下边的线段去掉。,例 (iv)线段位于左边界的两边(两端点的第1位不同),求出交点,并把上边的线段去掉。,5 求交 由于窗口边界与坐标轴平行,求交比较简单。 以左边界为例, 其边界的方程为 而线段的方程为: 因此交点为:,6 算法步骤 (i) 对两个端点进行编码; (ii) 如果两个代码的位“或”为0说
5、明线段位于窗口内,保存线段,结束; (iii) 如果两个代码的位“与”不为0说明线段位于窗口某边界的外侧,结束; (iv) 逐个边界进行求交测试,如果位于该边界的两侧则求交并回到(i);否则再取下一条边进行求交测试。 (v) 如果有线段位于窗口内则画出直线段。,编码: Code(int x,int y,int *c) *c=0; /*(xmin,ymin)和(xmax,ymax)为窗口左下角、右上角坐标。*/if(yymax) *c=*c|0 x08; else if(yxmax)*c=*c|0 x02;else if(xxmin)*c=*c|0 x01;,求交: 计算线段P1(x1,y1)P
6、2(x2,y2)与窗口边界的交点 if(LEFT,7 讨论 (i)Cohen-Sutherland算法有时要进行多次(最多4次)求交才能求出位于窗口内的线段,也可能没有。 (ii)算法不能处理窗口为任意多边形的情况。 (iii)用编码方法可快速判断线段- 完全可见和显然不可见。,3.2 多边形区域裁剪,在图形学中的多边形常认为是一封闭多边形,如果用直线段裁剪算法,可以吗? 新的问题:,边界不再封闭,需要用窗口边界的恰当部分来封闭它,当被裁剪对象为多边形时,称为多边形区域裁剪。 我们希望多边形被裁剪后得到的结果仍是多边形。从而正确地把多边形位于窗口内的区域表示出来。,不正确结果,裁剪后,裁剪前,
7、Sutherland-Hodgman算法,分割处理策略:将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。一次用窗口的一条边裁剪多边形。 考虑窗口的一条边以及延长线构成的裁剪线 该线把平面分成两个部分:可见一侧;不可见一侧,为窗口各边界裁剪的多边形存储输入与输出顶点表。在窗口的一条裁剪边界处理完所有顶点后,其输出顶点表将用窗口的下一条边界继续裁剪。 窗口的一条边以及延长线构成的裁剪线把平面分为两个区域,包含有窗口区域的一个域称为可见侧;不包含窗口区域的域为不可见侧。,多边形的各条边的两端点S、P。它们与裁剪线的位置关系只有四种,对于 情况(1)仅输出顶点S; 情况(2)输出0个顶点; 情况(3)输出线段SP与裁剪线的交点I和S; 情况(4)输出线段SP与裁剪线的交点I。,上述算法仅用一条裁剪边对多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入。 对于每一条裁剪边,只是判断点在窗口哪一侧以及求线段SP与裁剪边的交点算法应随之改变。,流水线过程(左上右下):左边的结果是上边的开始。,亦称逐边裁剪算法,裁剪结果的顶点构成: 裁剪边内侧的原顶点; 多边形的边与裁剪边的交点。 顺序连接。,优点: 裁剪算法采用流水线方式,适合硬件实现。 可推广到任意凸多边形裁剪窗口,例子,3 多边形裁剪算法 只需把被裁剪多边形依
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年团队协作效能评估知识考察试题及答案解析
- 高一语文必修上册《劝学》创新教学设计
- 生物第七单元植物的生殖示范课公开课一等奖课件省赛课获奖课件
- 医院连工资都快发不出局长开会当场哽咽2026
- 2024-2025学年湖北黄冈武穴市七年级(下)期末数学试卷及答案
- 边坡泄水孔滤料填充施工工艺
- 保理业务流动性风险管理制度
- 油库智能消防与应急联动系统建设指南(2026 版)
- 建筑材料报废回收合同协议
- 2026年重庆市自然灾害自救与互救知识模拟试卷
- 网架施工培训课件
- T/CTRA 01-2020废轮胎/橡胶再生油
- DB32/T 3562-2019桥梁结构健康监测系统设计规范
- 胰腺癌的影像诊断
- 学习任务群视域下小学语文读写结合教学探究
- 2025《金融机构合规管理办法》解读课件
- 交通运输部南海救助局2025年上半年招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 播撒草种合同范例
- (正式版)JC∕T 60022-2024 陶粒窑协同处置固体废物技术规范
- 投标书(技术标)版
- DL-T1475-2015电力安全工器具配置与存放技术要求
评论
0/150
提交评论