《 OpenGL 编程精粹》实验报告 班 级: 计 科 0 8 3 姓 名: 许 银 学 号: 0 8 0 4 6 4 1 0 0 4 指导教师: 陈 永 强 2 0 1 1 年 6 月 4 日 一、实验目的 通过本实验,使自己了解 OpenGL 的有关原理、算法及系统,掌握基本图形学显示程序设计方法,及三维图形程序设计方法,还要学习 OpenGL 光源、光照模型、物体材质、明暗处理、深度测试等生成真实世界的基本方法,为进一步学习计算机辅助设计方面的设计知识打下基础,同时通过此课程设计提高动手实践能力和学习分析能力。 二、实验要求 这次课程设计的要求是通过 OpenGL编程,模拟太阳、地球、月亮三者之间公转与自转的运动关系。 三、开发环境 基于 OpenGL的 Microsoft Visual C++ 6.0 四、实验内容 //外部变量定义 static GLfloat a = 3.5; static GLfloat b = 2; static GLfloat x = 0.0; static GLfloat y = 2.0; static GLfloat spin = 0.0; static GLfloat right = 0.0; static GLfloat left = 0.0; static GLfloat up = 0.0; static GLfloat down = 0.0; static sun_rotate = 0.0; static m = 0.0; static n = 0.0; static m_spin = 0.0; static m_x = 1.0; static m_y = 0.0; void sunfunc(void) { sun_rotate+=2.0; if(sun_rotate>360.0) sun_rotate-=360.0; glutPostRedisplay(); } void rightfunc(void) { right+=2.0; if(right>360) right-=360; glutPostRedisplay(); } void leftfunc(void) { left+=2.0; if(left>360) left-=360; glutPostRedisplay(); } void upfunc(void) { up+=2.0; if(up>360.0) up-=360.0; glutPostRedisplay(); } void downfunc(void) { down+=2.0; if(down>360.0) down-=360.0; glutPostRedisplay(); } void spinfunc(void) { spin+=0.006; if(spin>360) spin-=360.0; x=a*sin(spin); y=b*cos(spin); glutPostRedisplay(); } void m_spinfunc(void) { m_spin+=2; if(m_spin>360.0) m_spin-=360; m_x=sin(m_spin); m_y=cos(m_spin); glutPostRedisplay(); } //初始化 void init(void) { //设置背景色 glClearColor(0.0, 0.0, 0.0, 0.0);//设置平滑着色 glShadeModel(GL_SMOOTH);//启用深度测试 消隐 glEnable(GL_DEPTH_TEST);//全局环境光 GLfl...