基于Opengl的太阳系动画实现
#include <GL\glut.h>
float fEarth = 2.0f;//地球绕太阳的旋转角度
float fMoon = 24.0f;//月球绕地球的旋转角度
void Init()
{
glEnable(GL_DEPTH_TEST);//启用深度测试
glClearColor(0.0f,0.0f,0.0f,0.8f);//背景为黑色
}
void Reshape(int width, int height)
{
if (0==height)
{
height = 1;
}
glViewport(0,0,width,height);//设置视区尺寸
glMatrixMode(GL_PROJECTION);//指定当前操作投影矩阵堆栈
glLoadIdentity();//重置投影矩阵
//指定透视投影的观察空间
gluPerspective(45.0f,(float)width/(float)height,1.0f,1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void Display(void)
{
//清除颜色和深度缓冲区
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
//指定当前操作模型师徒矩阵堆栈
glMatrixMode(GL_MODELVIEW);
//重置模型视图矩阵
glLoadIdentity();
//图形沿Z轴负向移动
glTranslatef(0.0f,0.0f,-500.0f);
//绘制太阳
glColor3f(1.0f,0.0f,0.0f);
glutSolidSphere(50.0f,20,20);
glColor3f(0.0f,0.0f,1.0f);
//地球与太阳的黄赤交角
glRotatef(23.27,0.0,0.0,1.0);
glRotatef(fEarth,0.0f,1.0f,0.0f);
glTranslatef(200.0f,0.0f,0.0f);
//画地球
glutSolidSphere(20.0f,20,20);
glPopMatrix();
glPopMatrix();
glRotatef(6.0f,1.0f,1.0f,1.0f);
glRotatef(fMoon,0.0f,1.0f,0.0f);
glColor3f(1.0f,1.0f,0.0f);
glTranslatef(30.0f,0.0f,0.0f);
//月球
glutSolidSphere(5.0f,20,20);
glLoadIdentity();
glFlush();
glutSwapBuffers();
}
/*
在空闲时调用,动画效果
*/
void myIdle(void)
{
fEarth += 0.03f;//增加旋转步长,产生动画效果
if (fEarth>360.0f)
{
fEarth = 2.0f;
}
fMoon += 0.24f;
if (fMoon>360.0f)
{
fMoon = 24.0f;
}
Display();
}
int main(int argc,char* argv[])
{
glutInit(&argc,argv);
//窗口使用RGB色,双缓存和深度缓存
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowPosition(200,100);//窗口位置
//窗口尺寸
glutInitWindowSize(600,460);
glutCreateWindow("基于Opengl的太阳系动画");
glutReshapeFunc(Reshape);
glutDisplayFunc(Display);
glutIdleFunc(&myIdle);
Init();
glutMainLoop();//
return 0;
}
运行效果:


基于Opengl的太阳系动画实现的更多相关文章
- 基于OpenGL三维软件开发
实验原理: OpenGL在MFC下编程原理---- Windows操作系统对OpenGL的支持 在Windows下用GDI作图必须通过设备上下文(DeviceContext简写DC)调用相应的函数:用 ...
- 学习基于OpenGL的CAD程序的开发计划(一)
本人目前从事的工作面对的客户中很多来自高端制造业,他们对CAD/CAE/CAM软件的应用比较多.公司现有的软件产品主要是用于渲染展示及交互,但面对诸如CAD方面的应用(比如基于约束的装配.制造工艺的流 ...
- 基于HTML5 Tab选项卡动画切换特效
基于HTML5 Tab选项卡动画切换特效.这是一款基于HTML5+CSS3实现的带有动画切换效果的Tab选项卡插件cbpFWTabs.效果图如下: 在线预览 源码下载 实现的代码. html代码: ...
- 基于animation.css实现动画旋转特效
分享一款基于animation.css实现动画旋转特效.这是一款基于CSS3实现的酷炫的动画旋转特效代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class ...
- 基于OpenGL编写一个简易的2D渲染框架-05 渲染文本
阅读文章前需要了解的知识:文本渲染 https://learnopengl-cn.github.io/06%20In%20Practice/02%20Text%20Rendering/ 简要步骤: 获 ...
- 一款基于jquery ui的动画提交表单
今天要给大家分享一款基于jquery ui的动画提交表单.这款提交表单的的效果是以动画的形式依次列表所需填写的信息.效果非常不错,效果图如下: 在线预览 源码下载 实现的代码. html代码: & ...
- 分享一款基于jquery的圆形动画按钮
之前为大家介绍过一款纯css3实现的圆形旋转分享按钮.今天要给大家带来一款基于jquery的圆形动画按钮.这款按钮鼠标经过的时候以边框转圈,然后逐渐消息,在实例中给出了四种颜色的demo.效果图如下: ...
- 基于js全屏动画焦点图幻灯片
今天给大家分享一款基于js全屏动画焦点图幻灯片.这款焦点图内的内容以动画形式出现和消失.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="sl ...
- 一款基于jquery的喜欢动画按钮
今天给大家带来一款基于jquery的喜欢动画按钮.这个实例中给了三种动画特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <p class='heading'> C ...
随机推荐
- ebs R12 支持IE11
如果不考虑升级jdk到1.7的话,可以使用oracle推荐的方法. 1.兼容模式 2.Toolkit to Disable Automatic Delivery of Internet Explore ...
- 编写高效的CSS选择器
高效的CSS已经不是一个新话题,也不是一个我非得重拾的话题,但是,它却是自我在SKY工作以后,真正感兴趣并始终关注的一个话题. 很多人或者忘记了,或者仅仅是没有意识到,CSS可以是高效的也可能导致低能 ...
- 我的 Linux 配置
系统版本 Ubuntu 18.04 一名老年弱智 OI 选手的 Linux 配置 文本编辑器: Sublime Text 中文补丁,关闭自动补全,自动联想,括号匹配,字号 15 编译器: g++ (然 ...
- C#进阶之路(三):深拷贝和浅拷贝
一.前言 本文主要讨论深浅拷贝的区别,如果实现.浅拷贝日常的应用比较懂,这里不做深入讨论,那么深拷贝如何实现?目前我知道的方式有三种:反射,反序列化和表达树的方式.这里需要注意如果用反射来实现深拷贝的 ...
- centos7 node express项目 将http接口升级为https接口的解决方法
1.将对应的ssl证书放到项目文件中(我装的镜像是oneinstack的,创建项目时可以直接选择生成ssl证书的项目,即 xxx.key 和 xxx.crt 文件): 2.修改bin/www文件,修改 ...
- LOJ 10189 仓库建设 ——斜率优化dp
题目:https://loj.ac/problem/10189 #include<iostream> #include<cstdio> #include<cstring& ...
- BZOJ1047:[HAOI2007]理想的正方形
浅谈队列:https://www.cnblogs.com/AKMer/p/10314965.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...
- 在系统学习javaEE开发的颠覆者Springboot时遇到的localhost无法访问的问题
就是新建了一个Springboot项目,但是无法正常访问. 关闭防火墙试了,mvn方式启动试了,换端口试了.然后用Tomcat的start.bat测试发现localhost是可以访问的. 上网找到各种 ...
- Fiddler 使用技巧
1.Host重定向,将192.10.11.12:8091的地址重新定向到127.0.0.1:8080 if (oSession.host=="192.10.11.12:8091") ...
- 如何修改MAC自带的PHP的版本?
1. 切换到root目录,新建“.profile”文件 cd ~ vim .profile 2.在.profile文件中添加PATH环境变量 比如这样的路径 export PATH=/Applicat ...