- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计 报 告
实验名称: 计算机图形学实验
目 录
1.1 实验目的与要求..................................................1
1.2 实验任务内容与步骤..............................................1
实验一..........................................................1
实验二..........................................................3
1.3 实验结果........................................................3
实验一结果......................................................3
实验二结果......................................................8
1.4 心得体会........................................................8
1.5 源代码..........................................................9
实验目的与要求:
目的:
利用OpenGL库,对课本的图形原理进行C语言编程,从而实现各种绘图算法。从中进一步了解计算机图形学的原理,加深对课程内容的理解,逐步掌握算法原理的实现过程。另外,初步掌握OpenGL的基本使用方法,能够使用其进行简单图形、图素的绘制。
实验要求:
I.
(1)理解glut程序框架
(2)理解窗口到视区的变换
(3)理解OpenGL实现动画的原理
(4)添加代码实现中点Bresenham算法画直线
(5)添加代码实现改进Bresenham算法画直线
(6)添加代码实现圆的绘制(可以适当对框架坐标系进行修改
II.
(1)理解OpenGL中的变换过程
(2)理解透视投影与平行投影的不同
(3)添加代码实现太阳、地球和月亮的运动模型
(4)了解深度测试
(5)通过变换调整观察的位置与方向
(6)加入光照模型
实验内容和实验步骤:
实验一、利用各种算法实现直线与圆的扫描转换,在对应图中显示的同时,还要在控制台中打印显示像素点的坐标,以及误差d,e的值。
(1)中点Bresenham算法
①.利用中点Bresenham算法画出直线,其中直线的斜率要求为:0=k=1.
②.具体参数如下:
x0,y0 起点坐标
x1,y1 终点坐标
num 扫描转换时从起点开始输出的点的数目
③.算法实现流程步骤:
1. 对斜率k以及扫描点个数进行可行性判断。
2.通过起始点和终点,确定最大位移方向。
3. 算出d0,以及dx,dy,由最大位移方向确定
dx,dy在不同情况下的增量UpIncre,DownIncre。
4. 通过循环根据di逐步确定xi,yi,从而完成直线绘制。
(2)改进的Bresenham算法
①.利用改进的Bresenham算法画出直线,其中直线的斜率要求为:0=k=1.
②.具体参数如下:
x0,y0 起点坐标
x1,y1 终点坐标
num 扫描转换时从起点开始输出的点的数目
③.算法实现流程步骤:
1. 对斜率k以及扫描点个数进行可行性判断。
2.通过起始点和终点,确定最大位移方向。
3. 算出dx,dy,由最大位移方向确定变化量e。
4. 通过循环根据逐步确定xi,yi,以及修改ei的值
从而完成直线绘制。
(3)Bresenham算法画圆
①.利用圆对称性八分法,以及Bresenham算法画圆。
②.具体参数如下:
x,y 圆心坐标
R 圆半径
num 扫描转换时从起点开始输出的点的数目
③.算法实现流程步骤:
1. 设置起点坐标,以及误差d0初始值。
2.导出d在不同情况下的递推公式,以及x和y变化的范围(在 八分之一圆弧范围内)。
3. 根据x,y的界限设置循环:
文档评论(0)