• 大小: 65KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: OpenGL  

资源简介

利用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


评论

共有 条评论