计算机图形学课程设计报告报告.docx

上传人:b****3 文档编号:3660694 上传时间:2022-11-24 格式:DOCX 页数:8 大小:186.73KB
下载 相关 举报
计算机图形学课程设计报告报告.docx_第1页
第1页 / 共8页
计算机图形学课程设计报告报告.docx_第2页
第2页 / 共8页
计算机图形学课程设计报告报告.docx_第3页
第3页 / 共8页
计算机图形学课程设计报告报告.docx_第4页
第4页 / 共8页
计算机图形学课程设计报告报告.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

计算机图形学课程设计报告报告.docx

《计算机图形学课程设计报告报告.docx》由会员分享,可在线阅读,更多相关《计算机图形学课程设计报告报告.docx(8页珍藏版)》请在冰豆网上搜索。

计算机图形学课程设计报告报告.docx

计算机图形学课程设计报告报告

一、设计内容与要求

、设计题目

算法实现时钟运动

、总体目标和要求

(1)目标:

以图形学算法为目标,深入研究。

继而策划、设计并实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。

通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到巩固和实践计算机图形学课程中的理论和算法;学习表现计算机图形学算法的技巧;培养认真学习、积极探索的精神。

(2)总体要求:

策划、设计并实现一个能够充分表现图形学算法的演示系统,界面要求美观大方,能清楚地演示算法执行的每一个步骤。

(3)开发环境:

ViusalC++

、设计要求

内容:

(1)掌握动画基本原理;

(2)实现平面几何变换;

功能要求:

(1)显示时钟三个时针,实现三根时针间的相互关系;

(2)通过右键菜单切换时钟背景与时针颜色;

设计方案

通过使用OpenGL提供的标准库函数,综合图形学Bresenham画线和画圆的算法,OpenGL颜色模型中颜色表示模式等实现指针式时钟运动,并通过点击右键菜单实习时钟背景与时针颜色的转换。

根据Bresenham画线和画圆的算法,画出时钟的指针和表盘。

再根据OpenGL颜色模型定义当前颜色。

设置当时钟运行时交换的菜单,运行程序时可变换时钟背景与时针的颜色。

最后再设置一个恢复菜单恢复开始时表盘与指针的颜色。

二、总体设计

、过程流程图

 

、椭圆的中点生成算法

1、椭圆对称性质原理:

(1)圆是满足x轴对称的,这样只需要计算原来的1/2点的位置;

(2)圆是满足y轴对称的,这样只需要计算原来的1/2点的位置;

通过上面分析可以得到实际上我们计算椭圆生成时候,只需要计算1/4个椭圆就可以实现对于所有点的生成了。

2、中点椭圆算法内容:

(1)输入椭圆的两个半径r1和r2,并且输入椭圆的圆心。

设置初始点(x0,y0)的位置为(0,r2);

(2)计算区域1中央决策参数的初始值

p=ry*ry-rx*rx*ry+1/4*(rx*rx);

(3)在区域1中的每个Xn为止,从n=0开始,直到|K|(斜率)小于-1时后结束;

<1>如果p<0,绘制下一个点(x+1,y),并且计算

p=p+r2*r2*(3+2*x);

<2>如果P>=0,绘制下一个点(x+1,y-1),并且计算

p=p+r2*r2*(3+2*-2*r1*r1*(y-1)

(4)设置新的参数初始值;

p=ry*ry(X0+1/2)*(X0+1/2)+rx*rx*(Y0-1)-rx*rx*ry*ry;

(5)在区域2中的每个Yn为止,从n=0开始,直到y=0时结束。

<1>如果P>0的情况下,下一个目标点为(x,y-1),并且计算

p=p-2rx*rx*(Yn+1)+rx*rx;

<2>如果p<=0的情况下,下一个目标点为(x+1,y-1),并且计算

p=p-2rx*rx*Y(n+1)+2ry*ry*(Xn+1)+rx*rx;

(6)更具对称性原理计算其他3个象限的坐标。

(7)急速拿出中心位置在(x1,y1)的位置x=x+x1;y=y+y1;

、直线的Bresenham算法原理

这种生成直线的算法与数值微分法类似,每次迭代在增量最大方向上均走一步,其方向由增量的正负而定;另一方向上是否也走,取决于计算出来的误差项,误差项所记录的方向同最大增量方向垂直。

下面讨论误差项

,如图1所示。

图1误差项计算示意图

设图1中直线满足:

0

,即:

0

,所以X为最大增量方向,有

-

=1,故有每点的坐标计算:

(4)

因此直线上点的显示坐标为[

round(

)],round(

)表示最靠近y的整数。

从图1可以看出,对于计算出来的(

)点,

的取之为

;计算出来的(

)点,

的取值为

其根据就是因为

更靠近

更靠近

图1中A点为

的中心点,计算BC长度,若值大于,说明在A点之上,应取

,否则取

值。

设误差:

(5)当

,B点在A点上方,有

;当

<0,B点在A点下方,有

由公式(4)(5)得:

(6)

、图形变换基本原理

1、平移变换

平移变换函数如下:

voidglTranslate{fd}(TYPEx,TYPEy,TYPEz);

三个函数参数就是目标分别沿三个轴向平移的偏移量。

这个函数表示用于这三个偏移量生成的矩阵乘以当前矩阵。

当参数是,,时,表示对函数glTranslate*()的操作是单位矩阵,也就是对物体没有影响。

2、旋转变换

旋转变换函数如下:

VoidglRota{fd}TYPEangle,TYPEx,TYPEy,TYPEz);

函数中第一个参数是表示目标沿从点(x,y,z)到原点方向逆时针旋转的角度,后三个参数是旋转的方向点坐标。

这个函数表示用这四个参数生成的矩阵乘以当前矩阵。

当角度参数是时,表示对物体没有影响。

3、比例变换

比例变换函数如下:

VoidglScale{fd}(TYPEx,TYPEy,TYPEz);

单个函数参数值就是目标分别沿三个轴方向缩放的比例因子。

这个函数表示用这三个比例因子生成的矩阵乘以当前矩阵。

这个函数能完成沿相应的轴对目标进行拉伸、压缩和反射三项功能。

以参数x为例,若当x大于时,表示沿x方向拉伸目标;若x小于,表示沿x轴方向收缩目标;若x=表示沿x轴反射目标。

其中参数为负值时表示对目标进行相应轴的反射变换。

三、详细设计

、主程序代码及解释

#include""

#include""

#include""

#include""

#include""

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

旭等.VisualC++编程篇[M].北京:

电子工业出版社,2004.

2.朱亚平等.OpenGL编程实例[M].北京:

人民邮电出版社,1999.

3.倪明田,吴良芝.计算机图形学[M].北京:

北京大学出版社,2000.

4.彭达等.VisualC++多媒体编程技术[M].北京:

人民邮电出版社,1999.

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1