- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
重 庆 大 学
学 生 实 验 报 告
实验课程名称 计算机图形学
开课实验室 DS1501
学 院 软件学院 年级 一三级 专业班
学 生 姓 名 学 号
开 课 时 间 2015 至 2016 学年第 1 学期
总 成 绩 教师签名
软件学院制
《基本图形元素的生成算法(直线)》实验报告
开课实验室: 年 月 日
学院 软件学院 年级、专业、班 姓名 成绩 课程
名称 计算机图形学 实验项目
名 称 区域填充与直线的裁剪 指导教师 教师评语
教师签名:
年 月 日 一、实验目的
1)实现种子填充法或扫描线算法中的一种。
2)任选一种算法实现直线的裁剪。
二、实验原理
1.种子填充算法
种子填充算法又称为边界填充算法。其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。
种子填充算法常用四连通域和八连通域技术进行填充操作。
从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素。用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法。
从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素。用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法。
一般来说,八向连通算法可以填充四向连通区域,而四向连通算法有时不能填充八向连通区域。例如,八向连通填充算法能够正确填充如图2.4a所示的区域的内部,而四向连通填充算法只能完成如图2.4b的部分填充。
四向连通填充算法
a) 连通域及其内点 b) 填充四连通域
四向连通填充算法:
a) 种子像素压入栈中;
b) 如果栈为空,则转e);否则转c);
c) 弹出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多边形的填充色,若不是,则将该像素压入栈;
d) 转b);
e) 结束。
2. 直线裁剪
一、Cohen-Sutherland 裁剪算法
这个算法的特点是:通过初始测试来快速判断线段与视区的关系,以便减少线段求交的次数,从而提高裁剪算法的速度。
区域编码
假定以相对的两个角点(xmin,ymin)和(xmax,ymax)来表示一个矩形裁剪区域。如图3.9所示,将二维平面分区,中间的矩形为裁剪区域。每个区以四位代码(称为区域码)表示,代码的编号从右到左,各位与坐标区域的关系为:
位1:左;
位2:右;
位3:下;
位4:上。
如果某一位赋值为1,则表示端点落在相应的位置上,否则该位值为0。
通过比较端点的坐标与裁剪边界的坐标,可以迅速地决定区域码各位的值。例如:如果xxmin,则第一位置1;其它三位的值依此类推。对某线段的两个端点的区域码进行位与运算,可以快速判断哪条线段完全在裁剪窗口内,哪条线段完全在裁剪窗口外。完全在裁剪窗口内的线段的两个端点的区域码均为0000,该线段应当保留。两个端点的区域码的相同位的值都为1的线段则完全落在裁剪区域之外,该线段应当去除。例如,若线段的两端点的区域码分别为:code1=0101,code2=0110,则code1 code2=0100,表示该线段位于裁剪窗口的下方。显然,我们有:
I. 对线段的两个端点的区域码进行位与运算,若其结果不为0000,则线段完全位于裁剪窗口之外;
II. 若两个端点的区域码均为0000,则线段位于裁剪窗口内;
III. 否则,需要进一步计算线段与裁剪边界的交点,然后才能确定线段是完全位于裁剪窗口之外,还是一部分位于裁剪窗口之外另一部分位于裁剪窗口之内。
Cohen-SutherLand 裁剪算法的基本思想:
对每条线段P1P2:
1) 判断端点在裁剪区域内、外:
? P1P2完全在视区内,保存之;
? P1P2完全在视区外,舍弃之;
2) 上述两条件均不满足,则计算图形与裁剪边界的交点,将该线段分为分别位于裁剪区域内、外的两段,再重复1)。
在分段时,依据端点的区域码分别计算线段与各条裁剪边界的交点,如图3.10所示,对P1就需要分别计算交点P3和P4;即只要按顺序检测端点区
文档评论(0)