- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学
实验一:基本图形生成算法演示
一、实验目的与要求
了解 OpenGL 图形软件包绘制图形的基本过程及其程序框架,并
在已有的程序框架中添加代码实现直线和圆的生成算法,演示直线和
圆的生成过程,从而加深对直线和圆等基本图形生成算法的理解。
二、实验内容
实验要求:(1)理解glut程序框架
(2)理解窗口到视区的变换
(3)理解OpenGL实现动画的原理
(4)添加代码实现中点Bresenham算法画直线
(5)添加代码实现改进Bresenham算法画直线
(6)添加代码实现圆的绘制(可以适当对框架坐标系进
行修改)
实验操作和步骤:本次实验主要的目的是为了掌握基本画线和画
圆算法,对于书上给出的代码,要求通过本次试验来具体的实现。由
于实验已经给出大体的框架,所以只需要按照书上的算法思想来设计
具体实现代码,对于直线DDA算法,中点Bresenham算法及其改进算
法,以及Bresenham画圆算法都有进一步的体会。DDA算法是对每一
步都要进行增量处理,然后取整,绘制,而Bresenham通过判断误差函
数和求取递推公式来实现。特别是对于整数的选择取舍,以及代码的
流程和循环的控制有一个深入的了解。同时也熟练运用OpenGL基本
的绘图函数。
三、实验结果
1-1. DDA 算法画直线。
图 1-1-1 ,显示每次 DDA 算法画线的坐标结果(如上)。
图 1-1-2.显示 DDA 算法画圆过程及截 图
1-2. 中点 Bresenham 算法画直线
1-2-1 利用中点 Bresenham 算法画直线的各点坐标如上:
1-2-2.中点 Bresenham 画线算法画线过程截 图
1-3. 利用改进的 Bresenham 画线算法来画图
1-3-1.利用改进的 Bresenham 算法来画图各点坐标如上:
1-3-2.利用改进的 Bresenham 算法画直线图形如上
1-4.利用 Bresenham 画圆算法来作图
1-4-1.利用 Bresenham 画圆法作图各点坐标如上:
1-4-2.利用 Bresenham 画圆法作图及截图如上。
四、体会
通过本次试验,我进一步加深了对于基本画图算法的理解。特
别是对于 DDA,Bresenham 和画圆算法。其中,DDA 算法由于每一步
都要处理浮点数的四舍五入,所以在绘图时要进行取整,效率较低,但
是代码直观好懂,符合原理。而对于 Bresenham 及其改进算法,都是
在理论推导的基础上来实现的,然后经过整数化,形成了一个高效率
的画图算法,所以需要适当的理解,特别是对于取整操作判断比较巧
妙,实现了避免多次判断计算浮点数的目的,所以比较高效。而绘制
圆形的时候,用到的基本思想还是和 Bresenham 画图算法一样,只不
过需要注意的是八分法画圆,这样只需要绘制其中的八分之一就可以
利用对称的关系来绘制出整个 图形。而对于是否走下一步,或者是停
留,判断的依据还是误差函数,和前面的思想是类似。另外,通过实验
训练了自己的编程能力,同时熟悉了 OpenGL 绘图的函数和流程,也
进一步巩固了相关的知识。
五、源程序
源代码如下:
////////////////////////////////////////////////////////////////////////////
//实验要求:(1)理解glut程序框架
//
// (2)理解窗口到视区的变换
//
// (3)理解OpenGL实现动画的原理
//
// (4)添加代码实现中点Bresenham算法画直线
//
// (5)添加代码实现改进Bresenham算法画直线
//
// (6)添加代码实现圆的绘制(可以适当对框架坐标系
进行修改) //
// (7)适当修改代码实现具有宽度的图形(线刷子或方
刷子) //
///////////////////////////
您可能关注的文档
最近下载
- 中华人民共和国国歌-教案.doc VIP
- 2025年高考(全国一卷)数学试题和答案.docx VIP
- 离散数学答案(刘玉珍_编着).doc VIP
- 人民版六年级《劳动》上册全套教学课件.pptx
- 《城市规划原理》第3章 城乡规划体制.ppt VIP
- 基于SOR理论的社交网络互动对旅游行为的影响.docx VIP
- 哈曼JBL Live 770NC 无线罩耳式自适应降噪耳机 配置指南 (中国)说明书用户手册.pdf
- 《城市规划原理》第3章城乡规划体制.pptx
- 2025年最新的BRCGS包装材料全球标准第7版全套管理手册及程序文件.docx VIP
- 激光原理及应用陈家璧主编习题解答.pdf VIP
文档评论(0)