太阳系动画

#include

float fEarth = 2.0f; //地球绕太阳的旋转角度

float fMoon = 24.0; //月球绕地球的旋转角度

void Init ()

{

glEnable (GL_DEPTH_TEST); //启用深度测试

glClearColor(0.0f,0.0f,0.0f,0.8f); //背景为黑色

}

void Reshape (int w, int h)

{

if (0==h)

h=1;

glViewport (0, 0, w, h); //设置视区尺寸

glMatrixMode (GL_PROJECTION); //指定当前操作投影矩阵堆栈

glLoadIdentity (); //重置投影矩阵

//指定透视投影的观察空间

gluPerspective (45.0f, (float)w / (float)h, 1.0, 1000.0f);

glMatrixMode (GL_MODELVIEW);

glLoadIdentity ();

}

void Display (void)

{

//清除颜色和深度缓冲区

glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode (GL_MODELVIEW); //指定当前操作模型视图矩阵堆栈

glLoadIdentity (); //重置模型视图矩阵

glTranslatef (0.0f, 0.0f, -500.0f); //将图形沿着z轴负方向移动

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 (100,100);

glutInitWindowSize (600,400);

glutCreateWindow ("太阳系动画");

glutReshapeFunc (Reshape);

glutDisplayFunc (Display);

glutIdleFunc (&myIdle);

Init ();

glutMainLoop ();

return 0;

}

#include

float fEarth = 2.0f; //地球绕太阳的旋转角度

float fMoon = 24.0; //月球绕地球的旋转角度

void Init ()

{

glEnable (GL_DEPTH_TEST); //启用深度测试

glClearColor(0.0f,0.0f,0.0f,0.8f); //背景为黑色

}

void Reshape (int w, int h)

{

if (0==h)

h=1;

glViewport (0, 0, w, h); //设置视区尺寸

glMatrixMode (GL_PROJECTION); //指定当前操作投影矩阵堆栈

glLoadIdentity (); //重置投影矩阵

//指定透视投影的观察空间

gluPerspective (45.0f, (float)w / (float)h, 1.0, 1000.0f);

glMatrixMode (GL_MODELVIEW);

glLoadIdentity ();

}

void Display (void)

{

//清除颜色和深度缓冲区

glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode (GL_MODELVIEW); //指定当前操作模型视图矩阵堆栈

glLoadIdentity (); //重置模型视图矩阵

glTranslatef (0.0f, 0.0f, -500.0f); //将图形沿着z轴负方向移动

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 (100,100);

glutInitWindowSize (600,400);

glutCreateWindow ("太阳系动画");

glutReshapeFunc (Reshape);

glutDisplayFunc (Display);

glutIdleFunc (&myIdle);

Init ();

glutMainLoop ();

return 0;

}


相关内容

  • 想象中太阳教案
  • <想象中的太阳> 教材版本:义务教育课程标准冀版<美术>实验教材第1册第7课 教学设计思路: 1. 导入,激发学生兴趣. 2. 创设文化情境,角色扮演. 3. 拓展思维,完成任务. 4. 展示作品,享受成功. 教学目标: 1. 根据太阳的基本特征,大胆想象,创作一个或几个富有 ...

  • 地球的运动
  • 让地球"动"起来 让学生在"动"中学 ----<地球的运动>教学设计 [教学目标]: 知识与技能目标 1. 理解地球自转和公转运动的一般特点: 概念(旋转中心).方向.周期.速度. 2. 理解地球公转轨道特点. 3. 理解地球自转和公转运动的关系 ...

  • 秋天来了教学设计
  • <秋天来了>教学设计 广东顺德大良实验小学 吴向红 一.教学内容分析 1. 教学内容分析 本课是根据粤教版五年级下册<祖国各地的春天>一课改编的校本课程,属于<昼夜与四季>这一个内容,它与四年级<热>.<变化的天气>两个单元共同构成< ...

  • 奇妙的动画
  • . 奇妙的动画 教学重点:1.会画简单的动画,了解动画原理: 2.能够识别传统动画与电脑动画: 3.通过对动画片的兴趣对动画的制作产生浓厚的兴趣. 教学难点: 欣赏Flash 动画,了解"层"与"帧". 教学内容:观看动画片<神笔马良>,制作简单的 ...

  • 90后国产动画片合集
  • <魔方大厦> 来克在玩魔方的时候,魔方突然变大了.好奇的来克进入到魔方世界里.原来魔方大厦是由二十六个"方国"组成的,有装在罐头里的家长.玻璃国.火车国和星座号油轮等等非常有趣的国家.来克在这些国家里开始了一系列神奇的历险. 中文名: 魔方大厦 原作者: 郑渊洁 导演 ...

  • 沉浸体验在信息技术教学中的应用
  • 作者:江伟 中国信息技术教育 2014年03期 "沉浸体验"是指个人一心一意放在他们正在做的事情中的一种心理状态.在教育领域,众多学者研究表明,学生在任何活动中都有可能发生沉浸体验,有效的学习过程中这种体验是最有可能发生的,前提条件是学习的内容必须有诱惑力,是令人愉快.可享受的. ...

  • 美术一年级上册教案
  • 河北版一年级上册一年级美术教案 1.我的小助手 教材分析: 喜欢涂画是孩子的天性,孩子在入学之前一般都曾有过借助蜡笔.彩色水笔.剪刀.彩纸等工具材料进行美术活动的经历,但在感知.了解不同工具材料的特点,根据自己的创作内容,有目的地选择工具材料方面还有较大的局限性.本课内容涉及了小学一.二年级常用的工 ...

  • 3D体育馆建筑设计
  • 河南商业高等专科学校 毕 业 论 文 题 目 体育馆漫游动画 学 号 [1**********] 班 级 应用2班 专 业 计算机应用 系 别计算机应用系 作者姓名指导教师 李宏伟 职 称 助教 体育馆漫游动画 摘 要 随着我国经济的不断增长,科学技术的不断提高,城市化的步伐不断加快,各种建筑物的样 ...

  • 多媒体与信息集成(教案)
  • 专题六 多媒体信息的加工与集成 复习目标 1.掌握常见媒体信息的加工处理方法及软件. 2.掌握多媒体信息集成的形式及常用软件. 知识回顾: 多媒体技术的特征:数字化.集成性.多样性.交互性.非线性. 计算机能够处理多媒体信息取决于信息的____ 一.多媒体信息的加工: 1.图像相关知识 图的类型: ...