程序设计挑战式课程设计报告
- PAGE 15 -
作业名称:
观察行星的运行
学 院:
教育实验学院
班 级:
HC001505
学 号:
2015300074
姓 名:
祖陆晗
团队组成:
祖陆晗
西北工业大学
DATE \@ "yyyy'年'M'月'd'日'" 2016年1月8日
请填写以下十项内容,将表格按页对齐(插入空行),勿删除任何部分。
1、问题与背景(描述程序所要解决的问题或应用背景)
在物理课的学习中,当涉及到天体物理学的知识时,往往需要直观的观察天体的运行来加深对知识的理解。本程序基于Windows界面编程下的OpenGL图形函数库,设计了一个Windows窗口程序,实现了OpenGL太阳系八大星系和月球运行轨迹的表现。
2、开发工具(列出所使用的开发工具和第3方开发库)
Visual C++ 6.0
OpenGL图形函数库
3、主要功能(详细说明程序的功能)
用Windows窗口程序实现OPENGL太阳系八大行星和月球运行轨迹的表现。
4、设计内容(详细描述解决问题的原理和方法、算法、数据结构等)
一.程序的整体结构 :
1、在编程框架基础上使用OpenGL,需要包含以下头文件:
#include // Windows头文件
#include // OpenGL实用头文件
2、OpenGL绘制场景的框架
(1)头文件 包含所有头文件或链接库文件
(2)全局定义 应用实例、主窗口变量、数据结构等全局定义,固定不变
(3)窗口过程 窗口过程函数的实现,固定不变
(4)注册窗口类 注册窗口类函数的实现,除非修改窗口属性,一般不动
(5)初始化窗口 初始化窗口函数的实现,除非修改窗口初始化值,一般不动
(6)消息处理函数原型 给出所有消息处理函数的原型,增加/删除消息处理时变动
(7)消息循环 Windows应用程序主消息循环,一般不动
(8)消息处理函数实现 在这编写消息处理函数
(9)主函数 Windows应用程序基本结构,一般不动
3. 在框架下,在Display函数中绘制图形文字。
二、 程序的流程
1、 根据用户设置配置OpenGL的窗口
2、 创建OpenGL运行的窗口
3、 程序循环,运行Display绘图函数,显示图形
4、 退出程序
5、程序文件与工程名称(标出程序中所有文件名、工程名称及其说明)
文件夹:程序运行截图
.C:观察行星的运行
应用程序:观察行星的运行
Word文件:观察行星的运行程序报告
6、函数模块(程序中各个函数的原型声明及其说明)
一,首先定义一个数据结构,定义八大行星及月球的旋转角度以及旋转中心。
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
static float fMoonRot=0.0f;
static float fWaterRot=0.0f;
static float fGoldRot=0.0f;
static float fEarthRot=0.0f;
static float fFireRot=0.0f;
static float fWoodRot=0.0f;
static float fSoilRot=0.0f;
static float fSkyRot=0.0f;
static float fSeaRot=0.0f;
二,定义颜色数组
GLfloat whiteLight[] = { 0.2f, 0.2f, 0.2f, 1.0f };//白色光
GLfloat lightPos[] = { 0.0f, 0.0f, 0.0f, 1.0f };
三,设置窗口
void ChangeSize(int w, int h)
{
GLfloat fAspect;
// 防止被0所除
if(h == 0) h = 1;
// 把视口设置为窗口大小
glViewport(0, 0, w, h);
fAspect = (GLfloat)w/(GLfloat)h; //实际窗口的纵横比
// 重置透视坐标系统
glMatrixMode(GL_PROJECTION); //还有一个参数是L_MODELVIEW