计算机图形学课程设计报告报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设计内容与要求
、设计题目
算法实现时钟运动
、总体目标和要求
(1)目标:以图形学算法为目标,深入研究。继而策划、设计并实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到巩固和实践计算机图形学课程中的理论和算法;学习表现计算机图形学算法的技巧;培养认真学习、积极探索的精神。
(2)总体要求:策划、设计并实现一个能够充分表现图形学算法的演示系统,界面要求美观大方,能清楚地演示算法执行的每一个步骤。(3)开发环境:Viusal C++
、设计要求
内容:
(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
1<∆∆≤
x y ,即:01<≤m ,所以X 为最大增
量方向,有1i x +-i
x =1,故有每点的坐标计算:111i i i i y y m
x x ++=+⎧⎨
=+⎩ (4)
因此直线上点的显示坐标为[
i
x ,round(
i
y )],round(
i
y )表示最靠近y
的整数。从图1可以看出,对于计算出来的(i
x ,
i
y )点,i
y 的取之
为
r
i y ,;计算出来的(
1i x +,1+i y )点,1+i y
的取值为1,i r y +。其根据就是
因为i
y 更靠近
r
i y ,,
1
+i y 更靠近1,i r
y +。
图1 中A 点为
1,i r
y +与
r
i y ,的中心点,计算BC 长度,若值大于,
说明在A 点之上,应取
1,i r
y +,否则取r
i y ,值。
设误差:11,()0.5
i i i r x y y ε++=-- (5) 当
1()i x ε+0≥,B 点在A 点
上方,有
1,,1
i r i r y y +=+;当
1()i x ε+<0,B 点在A 点下方,有1,,i r i r y y +=。
由公式(4)(5)得:
221,()0.5
i i i r x y y ε+++=--
11,0.5
i i r y m y ++=+--
1,11,110.5()00.5
()0
i i r i i i r i y y m x y y m x εε++++--+-≥-+-<⎧=⎨
⎩
1111()1()0()
()0
i i i i x m x x m x εεεε+++++-≥+<⎧=⎨
⎩(6)
、图形变换基本原理
1、平移变换 平移变换函数如下:
void glTranslate{fd}(TYPE x, TYPE y, TYPE z);
三个函数参数就是目标分别沿三个轴向平移的偏移量。这个函数