opengl绘制钟表
- -应付下实验吧
#include<cstdio>
#include<time.h>
#include<math.h>
#include <GL/glut.h>
//sleep ,gluttimefunc
struct tm* localTime;
int hour, minute, second;
double pi=3.1415926;
void gettime(){//读取时间到全局变量
time_t curTime;
time(&curTime);
localTime = localtime(&curTime);
hour=localTime->tm_hour;
minute=localTime->tm_min;
second=localTime->tm_sec;
}
void display_watch()//绘制钟表
{
//可见到的坐标系为x,y轴线[-1,1]的正方形区域
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_LINE_SMOOTH);
double r=0.8,r2=0.7,rat=0,ww=7,tim=360;
double rr1=0.4,rr2=0.64,rr3=0.75,w1=10,w2=8,w3=4;
glColor3f(0.0,1.0,0.4);
glBegin(GL_POLYGON);//绘制钟外层圆形
for(int q=1;q<=tim;q++){
glVertex3f(r*cos(rat),r*sin(rat),0);
rat+=pi/tim*2;
}
glEnd();
glColor3f(0.0,0.8,0.7);
glBegin(GL_POLYGON);//绘制钟内层圆形
for(int q=1;q<=tim;q++){
glVertex3f(r2*cos(rat),r2*sin(rat),0);
rat+=pi/tim*2;
}
glEnd();
glLineWidth(ww);//修改线宽,绘制刻度
glColor3f(0.0,0.1,0.1);
glBegin(GL_LINES);
for(int q=1;q<=12;q++){
glVertex3f((r2-0.1)*cos(rat),(r2-0.1)*sin(rat),0);
glVertex3f(r*cos(rat),r*sin(rat),0);
rat+=pi/6;
}
glEnd();
rat=pi/2-pi*2/12*(hour+minute/60.0);//改变线宽,绘制时针
glLineWidth(w1);
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINES);
glVertex3f(0,0,0);
glVertex3f(rr1*cos(rat),rr1*sin(rat),0);
glEnd();
rat=pi/2-pi*2*(minute/60.0+second/60.0/60);//改变线宽,绘制分针
glLineWidth(w2);
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINES);
glVertex3f(0,0,0);
glVertex3f(rr2*cos(rat),rr2*sin(rat),0);
glEnd();
rat=pi/2-pi*2*(second/60.0);//改变线宽,绘制秒针
glLineWidth(w3);
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINES);
glVertex3f(0,0,0);
glVertex3f(rr3*cos(rat),rr3*sin(rat),0);
glEnd();
//printf("%d %d %d\n",hour,minute,second);
glutSwapBuffers();
}
void idle(void)//读取时间到全局变量,重绘钟表
{
gettime();
glutPostRedisplay();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE| GLUT_RGB);
glutInitWindowSize(666, 666);
glutInitWindowPosition(0, 0);
glutCreateWindow("watch");
glutDisplayFunc(display_watch);
//利用idle操作更新时钟
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
opengl绘制钟表相关推荐
- 如何用 OpenGL 绘制雪花?
作者 | 许向武 责编 | 张红月 出品 | CSDN博客 看冬奥才知道,阿勒泰不但是中国的"雪都",还是"人类滑雪起源地".这个说法是否成立,姑且不论,阿勒泰 ...
- 使用OpenGL绘制圆环体(Torus)
本篇介绍一下使用OpenGL绘制圆环体的方法.程序是在C#和OpenTK环境下编译的. 代码: /// <summary> /// 绘制圆环体 /// </summary> / ...
- 【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )
文章目录 一.绘制三角形 二.三角形绘制顺序 1.绘制正面 2.三个点逆时针方向排列 3.三个点顺时针方向排列 4.设置点的正面方向 三.绘制多个三角形 四.相关资源 一.绘制三角形 三角形绘制即绘制 ...
- 【OpenGL】十一、OpenGL 绘制多个点 ( 绘制单个点 | 绘制多个点 )
文章目录 一.绘制单个点 二.绘制多个点 三.相关资源 在上一篇博客 [OpenGL]十.OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | ...
- 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )
文章目录 一.初始化 OpenGL 矩阵 1.设置投影矩阵 2.设置模型视图矩阵 二.绘制点 1.清除缓冲区 2.设置当前颜色值 3.设置绘制点的大小 4.绘制点 5.将缓冲区绘制到前台 三.部分代码 ...
- 【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )
文章目录 一.OpenGL 状态机概念 二.OpenGL 矩阵概念 上一篇博客 [OpenGL]八.初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗 ...
- OpenGL绘制二个不同颜色的三角形的实例
OpenGL绘制二个不同颜色的三角形 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include & ...
- OpenGL绘制带有索引的矩形的实例
OpenGL绘制带有索引的矩形 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include < ...
- OpenGL绘制一个三角形的实例
OpenGL绘制一个橘黄色的三角形 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include &l ...
最新文章
- 正式迁移博客到osc
- SDUT-2132_数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- MySQL【案例讲解】分组函数
- Oracle E-Business Suite 12.1.1 Rapid Clone
- Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了
- (转)Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏
- 【十六】Jmeter:目录介绍
- 安卓开发 给控件左边右边下边添加阴影_使用鸿蒙开发一款TV版的小游戏
- 100多本炒股电子书网盘自由下载!
- 【推荐】男篮之恨,以cxk可解?
- Traceback (most recent call last):
- 大数据解决方案:解决T+0问题
- 外文翻译原文附在后面_本周作业是翻译外文文献摘要,电子版,回复到作业中,提交附件,格式按照外文文献翻译模版,先中文再附上英文原文,只需要摘要_学小易找答案...
- 兀键和6键怎么判断_如何判断分子或离子中的大π键
- Unity学习笔记:Animator、Animator Controller、Animation Cilp之间的关系、以及Blend Tree的用法;
- Python使用腾讯云-短信服务发送手机短信
- 让VBOX支持USB
- 秋夜长,怎奈碎念悠怅
- 项目一:SORM基本框架之基本思路
- hnust 最小生成树