- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《计算机图形学》课程设计报告
题目名称: 编程实现时钟运动
专 业 计算机科学与技术
班 级 13-04
学 号
姓 名
指导教师
2016 年 1 月 13 日
目录
一、设计内容与要求 1
1.1 设计题目 1
1.2 设计内容 1
1.3 设计目标 1
二、方案设计 1
2.1 总体方案设计 1
2.2 过程流程图 2
三 3
3.1 程序设计原理及说明 3
3.1.1 表盘圆利用Bresenham算法 3
3.1.2 时针、分针和秒针的直线画法 3
3.1.3 颜色的添加 3
3.1.4 获取系统时间 3
3.1.5小刻度及整点时间数字添加 4
3.1.6改变颜色及恢复颜色 4
3.2 程序主要源代码 5
四、程序运行说明 18
4.1 程序运行结果分析 18
4.2 程序运行结果图例 18
五、总结 19
5.1 程序结构优缺分析 19
5.2 程序改进方案与展望 19
5.3 心得体会 20
六、参考资料: 20
一、设计内容与要求
1.1 设计题目
编程实现时钟运动
1.2 设计内容
设计一个可以获取系统时间的简易时钟,通过程序编写时钟的表盘、时针、分针、秒针和整点数字。钟表的样式根据自己的喜好设计,看起来简洁大方,还应该美观。时钟设计的重点在于如何获取系统的时间,表针之间的逻辑关系,时钟的模拟运行以及颜色的改变与恢复。
1.3 设计目标
时钟几乎是每个人生活中必备的生活用品。时钟虽小确非常重要。一款良好的时钟可以给人们带来极大的便利。
这次设计的目标是能够获取系统时间,简洁美观,能够清楚地实现时针,分针,以及秒针的辨识和运转。并且能够通过右键改变时针以及表盘的颜色。
二、方案设计
2.1 总体方案设计
编程实现时钟运动,通过使用OpenGL以及图形学Bresenham的算法画出表针和表盘,并添加刻度。使用 OpenGL颜色模型中的RGBA模式来给表盘等添加颜色来达到美观并用于区分表针,来完成表针的运动。然后通过添加函数来获取系统时间。并通过点击右键菜单实现时钟背景与时针颜色的转换。
2.2 过程流程图
详细设计
3.1 程序设计原理及说明
3.1.1 表盘圆利用Bresenham算法
Bresenham画圆算法适合于生成整圆,它使用8路对称法,只计算出90°~45°的点,移动方向为+x,-y。设(Xi,Yi)是扫描到第i步时选定的坐标,下个被选定的可能是T或S。如图:
P T
S
Bresenham画法1/8圆弧示例
3.1.2 时针、分针和秒针的直线画法
由于时针、分针和秒针是随时间运动着的,而且其中一端位于固定点在圆盘中心,所以,只要确定另一端的移动点便可画出。
3.1.3 颜色的添加
再根据OpenGL颜色模型定义当前颜色。设置当时钟运行时交换的菜单,运行程序时可变换时钟背景与时针的颜色。最后再设置一个恢复菜单恢复开始时表盘与指针的颜色。
3.1.4 获取系统时间
获取系统时间用到函数_strtime,它的功能为获取当前系统时间(不包括日期),函数以字符指针形式为返回。例如:
#includetime.h
#includestdio.h
#include conio.h
void main()
{
char Now_time[30];
printf(%s,_strtime(Now_time));
getch();
}
运行结果将打印出当前时间。
3.1.5小刻度及整点时间数字添加
在表盘上添加数字用到函数glutBitmapCharacter(font , character),它是glut工具函数,用于在glut窗口某位置显示字符。由于是glut内置函数,功能有所限制,只能显示英文字符,而且字体、大小都不能任意设置。
//用OpenGL绘制的时钟
#include GL/glut.h
#include windows.h
#include math.h
#include stdlib.h
#include time.h
#include iostream.h
#includesstream
#define changecolor 1
#define resumecolor 2
#define quit 3
float br=0.0,bg=0.0,bb=0.0; //定义变量用来改变颜色
int winheight=768,winwidth=600;
int
文档评论(0)