计算机图形学实验报告二维裁剪.doc
- 文档编号:1245276
- 上传时间:2023-04-30
- 格式:DOC
- 页数:5
- 大小:104KB
计算机图形学实验报告二维裁剪.doc
《计算机图形学实验报告二维裁剪.doc》由会员分享,可在线阅读,更多相关《计算机图形学实验报告二维裁剪.doc(5页珍藏版)》请在冰点文库上搜索。
计算机科学与技术学院
2013-2014学年第一学期
《计算机图形学》实验报告
班级:
学号:
姓名:
教师:
成绩:
实验项目(3、二维裁剪)
一、实验目的与要求
(1)掌握线段裁剪算法原理,并实现其算法。
(2)理解多边形裁剪、字符裁剪算法思想,能编程实现其算法。
二、实验内容
设计菜单程序,利用消息处理函数,完成以下要求:
(1)实现直线段的标号法(Cohen-Sutherland)、矩形窗口裁剪算法。
(2)参考教材中的算法,用矩形窗口实现多边形的Sutherland-Hodgman裁剪算法。
三、重要算法分析
以下分析Cohen-Sutherland和Sutherland-Hodgman两个算法,其中Cohen-Sutherland算法的基本思想通过编码的方法快速实现对直线段的裁剪;Sutherland-Hodgman算法基本思想是用窗口的四条边所在的直线依次来裁剪多边形。
(一)Cohen-Sutherland算法
该算法的基本思想是:
对于每条待裁剪的线段P1,P2分三种情况处理:
(1)若P1P2完全在窗口内,则显示该线段。
(2)若P1P2完全在窗口外,则丢弃该线段。
(3)若线段既不满足“取”的条件,也不满足“舍”的条件,则求线段与窗口边界的交点,在交点处把线段分为两段。
1.编码原则
具体编码过程为将延长线窗口的四条边线(yT、yB、xR、xL),将二维平面分成九个区域,全为0的区域是裁剪窗口,其中各位编码的定义如下:
按照如上定义,相应区域编码如图1所示。
图1区域编码
2.裁剪算法:
依据上面的编码原则,可以总结出对一条线段的可见性进行测试:
1)若线段两个端点的四位二进制编码全为0000,即两端点编码逻辑或运算为0,那么该线段完全位于窗口内,可直接保留。
2)对端点的四位二进制编码进行逻辑与运算,若结果不为零,那么整条线段必位于窗口外,可直接舍弃。
3)否则,这条线段既不能保留也不能舍弃,它可能与窗口相交。
此时,需要对窗口进行再分割,并对分割后的线段按照一定顺序进行检查,决定保留、舍弃或再分割。
重复这过程,直到全部线段均被舍弃或保留为止。
(二)Sutherland-Hodgman算法
算法的基本思想是利用窗口的四条边所在的直线依次来裁剪多边形。
多边形的每条边与裁剪线的位置关系有4种情况,如图2所示。
图2多边形边界与裁剪窗口的关系
其中a)为从外到内的输出P和I,b)为从内到内输出P,c)为从内到外输出I,d)为从外到外不输出。
假设当前处理的多边形为SP。
1)在图2a的情况中,端点S在外侧,P在内侧,则按顺序将交点I和P都输出到结果多边形的顶点表中。
2)在图2b的情况中,端点S和都在内侧,则输出P到结果多边形的顶点表中。
3)在图2c的情况中,端点S在内侧,P在外侧,则输出交点I到结果多边形的顶点表中。
4)在图2d的情况中,端点S和P在外侧,没有输出。
四、程序运行截图
1.用Cohen-Sutherland算法实现线段的裁剪,如图3所示,其中a)图中的线段为裁剪前的,b)图将超出裁剪多边形的线段部分裁剪后的结果。
图3Cohen-Sutherland算法裁剪前和后
a)裁剪前b)裁剪后
2.Sutherland-Hodgman算法实现多边形裁剪,如图4所示。
图4Sutherland-Hodgman算法裁剪多边形前和后
a)裁剪多边形前b)裁剪多边形后
五、总结与调试经验
(1)通过这次实验,加深了对图形学的理解,尤其对线段裁剪和多边形裁剪有了更加深入的理解。
(2)我学会了多边形裁剪算法,从刚开始的不知道到现在的理解,这是一个很大的进步,当然我也遇到了些困难,比如用某一条多边形的窗口边界裁剪多边形,它要分为四种情况来分别考虑,也看出了我的思维不够周密,需要多多锻炼。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 实验 报告 二维 裁剪