源代码:

#include<stdio.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include<gl/GLUT.H>

static float year = 0, day = 0;

void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);//设定着色模式,使用图元中某个顶点的颜色来渲染整个图元。
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glLoadIdentity();
glPushMatrix();
gluLookAt(0.0,0.0,5,0.0,0.0,0.0,0.0,1.0,0.0);

//绘制太阳
glRotatef((GLfloat)year,0.0,1.0,0.0);
glutWireSphere(0.8,20,20);

//绘制地球
glRotatef((GLfloat)year,0.0,1.0,0.0);
glTranslatef(2.0,0.0,0.0);
glRotatef((GLfloat)day,0.0,1.0,0.0);
glutWireSphere(0.2,20,20);

//绘制月球
glRotatef((GLfloat)year,0.0,1.0,0.0);
glTranslatef(0.4,0.0,0.0);
glRotatef((GLfloat)day,0.0,1.0,0.0);
glutWireSphere(0.1,15,15);

//glutWireCube(2.0);
    glPopMatrix();
glutSwapBuffers();

}

void spinDisplay(void)
{
year = year + 0.03;
    if ( year > 360.0)
{
year = year - 360.0;
}
day = day + 0.06;
    if ( day > 360.0)
{
day = day - 360.0;
}

glutPostRedisplay();
}

void reshape(int w,int h)
{
glViewport(0,0,(GLsizei) w,(GLsizei) h);//函数作用:用一个视景体截取图像

//glFrustum(-1.0,1.0,-1.0,1.0,-1.0,1.0);
glMatrixMode(GL_PROJECTION);//mode 指定哪一个矩阵堆栈是下一个矩阵操作的目标,参数表示接下来要进行投影相关的操作

glLoadIdentity();//设置当前变化矩阵为单位矩阵;单位矩阵就是对角线上都是1,其余元素皆为0的矩阵。然后复位

//glOrtho(-3.0,3.0,-3.0,3.0,-3.0,3.0);
glFrustum(-1.0,1.0,-1.0,1.0,1.5,20);
glMatrixMode(GL_MODELVIEW);//进行视景相关的操作

//glLoadIdentity();
}

int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(600,600);
glutInitWindowPosition(50,50);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(spinDisplay);
glutMainLoop();
return 0;
}

效果:

重要函数之:

gluLookAt(0.0,0.0,5,0.0,0.0,0.0,0.0,1.0,0.0);

作用:视点变换,初始化矩阵后,可使用此函数来制定视点变换,相当于设置相机的位置和方向。

参数理解:

第一组(三个数据为一组):脑袋的位置

第二组:看得物体的位置

第三组:头顶朝向的方向

OpenGL:太阳、地球、月球模型模拟动画相关推荐

  1. opengl的配置和太阳-地球-月球演示

    详细配置过程请点击链接 https://www.cnblogs.com/flylinmu/p/7823019.html 下面介绍opengl实例,太阳-地球-月球演示 建立一个控制台程序 sun.cp ...

  2. html5之太阳地球月球,使用html5画出地球月球和太阳之间的环绕关系

    本文主要是描述了使用html5画出地球月球和太阳之间的环绕关系,其实他们比较简单,主要是通过旋转来控制各个之间的环绕关系!~ 输入代码,里面有注释: ------------------------- ...

  3. Canvas模拟太阳地球月球的运动过程

    先看效果图 代码 package com.test.paintdemo.pathrelate;import android.content.Context; import android.graphi ...

  4. matlab地球公转,Unity模拟太阳地球月球公转自转

    1. 打开Unity编辑器,创建三个sphere,依次重命名为Sun,Earth,Moon.将三个球体大小比例控制在5:3:1,并适当调整位置. 2. 分别为三个小球附上材质 3. 新建脚本文件,重命 ...

  5. OpenGl太阳地球月亮运动系统

    在讲解这个运动系统,首先我们的来讲解OpenGl里有关几个图形变换的知识,这里就以球为例,我们需要知道将球平移,旋转的2个知识.因为系统必须用到平移和旋转. 1 平移变换: glTranslatef( ...

  6. OpenGL “太阳、地球和月亮”天体运动动画 例子

    http://oulehui.blog.163.com/blog/static/7961469820119186616743/ OpenGL "太阳.地球和月亮"天体运动动画 例子 ...

  7. javascript-动画animation自己学习做太阳地球和月球运转动画;

    首先声明一点:自己学习的程序来源于: https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Basic_animat ...

  8. 地球绕着太阳转 月球绕着地球转(入门)

    网上都是介绍些WPF的入门基础,稍微些例子,程序都非常少. 今天弄了个简易的太阳系(仅仅是地球绕着太阳转,月亮绕着地球转),有个样子而已. 以下是效果图,当你点"start"but ...

  9. matlab地球月球卫星关系,Matlab 卫星绕地球旋转演示动画

    发布时间: Oct 21, 2012 更新时间: Oct 21, 2012 总字数:1040 阅读时间:3m 作者: 谢先斌 Matlab 卫星绕地球旋转演示动画 代码 h=figure('numbe ...

  10. openGl编程实现一个太阳地球月亮的一个简单运动系统

    一. 项目目的 使用openGl编程实现一个太阳地球月亮的一个简单运动系统,要求实现三维转动.点光源变化.纹理映射及阴影等效果 二. 任务实现 \1. 满足三者实际大小/距离的比例关系: \2. 满足 ...

最新文章

  1. 在一个数组中查找两个重复出现的数字
  2. python函数之各种器
  3. 麦克纳姆轮运动原理_麦克纳姆轮介绍
  4. 软件测试工程师需要具备哪些能力
  5. Redis pub/sub机制在实际运用场景的理解(转载)
  6. 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时
  7. easyui日期控件datebox的onchange事件
  8. 禁用驱动程序强制签名(终极办法)
  9. Linux系统装intel网卡,在Centos下安装intel网卡的方法
  10. ConvTrans: [Neurips 2019]
  11. Kali安装谷歌拼音
  12. 谷歌浏览器如何给长网页截图?
  13. 网站服务器高主频还是多核心,服务器中的高主频与核心数有什么区别?
  14. 串口服务器采集需要通讯协议么,C2000-A2-SDX6000-CX1
  15. 《数字图像处理》冈萨雷斯,Matlab函数汇总 .
  16. 使用CSS实现悬停显示二维码
  17. Android和iOS接入Appsflyer SDK
  18. 人大金仓和达梦的空间数据能力对比
  19. Sell in和sell through
  20. Altium Designer15通用规则设置

热门文章

  1. 77 关于 java.util.concurrent.RejectedExecutionException:Thread limit exceeded replacing blocked worker
  2. SSM框架医院信息管理系统-患者医生考勤管理挂号管理-病房管理-科室管理- (idea开发javaweb-php-asp.netC#-j2ee-springboot)
  3. chrome翻译插件之谷歌翻译
  4. DDD案例(2):从领域分析到代码实现
  5. 小学英语语法口诀巧记大全,简单实用!
  6. 中国科技大学计算机系导师,中国科学技术大学
  7. 电脑键盘上各个按键功能详解
  8. 可视化图表告诉你,《人世间》《余生,请多指教》到底爆没爆?
  9. Selenium元素定位神器工具谷歌浏览器插件-SelectorsHub介绍、安装和使用
  10. android studio字体加粗属性,android textview字体加粗 Android studio最新水平居中和垂直居中...