资源简介
利用OpenGL 实现时钟的绘制,要求具有秒针,分针和时针的运动效果,并实现系统时间的调用

代码片段和文件信息
#include
#include
#include
#include
#include
#define PI 3.1415926
GLfloat hourminsec;
void GetTime() //调用系统时间
{
time_t tt = time(NULL);
tm *t = localtime(&tt);
hour = t->tm_hour;
min = t->tm_min;
sec = t->tm_sec;
}
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLineWidth(5);
GLfloat iangle;
GLint circle_points = 360;
GLint circle_point = 60;
glBegin(GL_LINE_LOOP); //画时钟外圈
for (i = 0; i < circle_points; i++)
{
angle = 2*PI*i/circle_points;
glVertex2f(100*cos(angle) 100*sin(angle));
}
glEnd();
glBegin(GL_LINE_LOOP); //画原点
for (i = 0; i < circle_points; i++)
{
angle = 2*PI*i/circle_points;
glVertex2f(cos(angle) sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPointSize(1);
glBegin(GL_POINTS); //分针刻度
for (i = 0; i < circle_point; i++)
{
angle = 2*PI*i/circle_point;
glVertex2f(95*cos(angle) 95*sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPointSize(5);
glBegin(GL_POINTS); //时针刻度
for (i = 0; i < 12; i++)
{
angle = 2*PI*i/12;
glVertex2f(95*cos(angle) 95*sin(angle));
}
glEnd();
GetTime();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.f1.f0.f); //画秒针
glPushMatrix();
glRotatef(sec/60*360 0.0f 0.0f -1.0f);
glTranslatef(0.0f -10.0f 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0 100 0);
glVertex3f(-1 0 0);
glVertex3f(1 0 0);
glEnd();
glPopMatrix();
glColor3f(1.0f0.0f0.0f); //画分针
glPushMatrix();
glRotatef(min/60*360+sec/60*360/60 0.0f 0.0f -1.0f);
glTranslatef(0.0f -10.0f 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0 80 0);
glVertex3f(-1 0 0);
glVertex3f(1 0 0);
glEnd();
glPopMatrix();
glColor3f(0.f0.f1.f); //画时针
glPushMatrix();
glRotatef(hour/12*360+min/60*360/12+sec/60/60*360/12 0.0f 0.0f -1.0f);
glTranslatef(0.0f -10.0f 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0 60 0);
glVertex3f(-1 0 0);
glVertex3f(1 0 0);
glEnd();
glPopMatrix();
glutSwapBuffers();
}
void Init()
{
glEnable(GL_DEPTH_TEST);
glClearColor(0.0f 0.0f 0.0f 1.0f );
}
void GLTimer(int value)
{
glutPostRedisplay();
glutTimerFunc(1000 GLTimer 1);
}
void Reshape(int w int h)
{
GLfloat nRange = 100.0f;
if(h == 0)
h = 1;
glViewport(0 0 w h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho (-nRange nRange -nRange*h/w nRange*h/w nRange*2.0f -nRange*2.0f);
else
glOrtho (-nRange*w/h nRange*w/h -nRange nRange nRange*2.0f -nRange*2.0f);
glMatrixMode(GL_MODE
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3421 2015-05-05 14:04 时钟绘制\时钟.cpp
文件 33792 2015-05-05 10:59 时钟绘制\时钟.exe
文件 58062 2015-05-05 11:59 时钟绘制\时钟.PNG
目录 0 2015-05-10 23:14 时钟绘制
----------- --------- ---------- ----- ----
95275 4
- 上一篇:关于PCI9054的信号引脚说明
- 下一篇:运动的自行车OpenGL
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论