如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
《OpenGL编程精粹》实验报告班级:计科083姓名:许银学号:0804641004指导教师:陈永强2011年6月4日实验目的通过本实验,使自己了解OpenGL的有关原理、算法及系统,掌握基本图形学显示程序设计方法,及三维图形程序设计方法,还要学习OpenGL光源、光照模型、物体材质、明暗处理、深度测试等生成真实世界的基本方法,为进一步学习计算机辅助设计方面的设计知识打下基础,同时通过此课程设计提高动手实践能力和学习分析能力。二、实验要求这次课程设计的要求是通过OpenGL编程,模拟太阳、地球、月亮三者之间公转与自转的运动关系。三、开发环境基于OpenGL的MicrosoftVisualC++6.0四、实验内容//外部变量定义staticGLfloata=3.5;staticGLfloatb=2;staticGLfloatx=0.0;staticGLfloaty=2.0;staticGLfloatspin=0.0;staticGLfloatright=0.0;staticGLfloatleft=0.0;staticGLfloatup=0.0;staticGLfloatdown=0.0;staticsun_rotate=0.0;staticm=0.0;staticn=0.0;staticm_spin=0.0;staticm_x=1.0;staticm_y=0.0;voidsunfunc(void){sun_rotate+=2.0;if(sun_rotate>360.0)sun_rotate-=360.0;glutPostRedisplay();}voidrightfunc(void){right+=2.0;if(right>360)right-=360;glutPostRedisplay();}voidleftfunc(void){left+=2.0;if(left>360)left-=360;glutPostRedisplay();}voidupfunc(void){up+=2.0;if(up>360.0)up-=360.0;glutPostRedisplay();}voiddownfunc(void){down+=2.0;if(down>360.0)down-=360.0;glutPostRedisplay();}voidspinfunc(void){spin+=0.006;if(spin>360)spin-=360.0;x=a*sin(spin);y=b*cos(spin);glutPostRedisplay();}voidm_spinfunc(void){m_spin+=2;if(m_spin>360.0)m_spin-=360;m_x=sin(m_spin);m_y=cos(m_spin);glutPostRedisplay();}//初始化voidinit(void){//设置背景色glClearColor(0.0,0.0,0.0,0.0);//设置平滑着色glShadeModel(GL_SMOOTH);//启用深度测试消隐glEnable(GL_DEPTH_TEST);//全局环境光GLfloatmodel_ambient[]={0.1,0.1,0.1,1.0};//光源位置GLfloatlight_position[]={1.0,1.0,1.0,0.0};//光的环境强度GLfloatlight_ambient[]={1.0,1.0,1.0,1.0};//光的散射强度GLfloatlight_diffuse[]={1.0,1.0,1.0,1.0};//光的镜面强度GLfloatlight_specular[]={1.0,1.0,1.0,1.0};//设置背景色glClearColor(0.0,0.0,0.0,0.0);//设置平滑着色glShadeModel(GL_SMOOTH);//启用深度测试消隐glEnable(GL_DEPTH_TEST);glLightfv(GL_LIGHT0,GL_POSITION,light_position);glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);//光照模型glLightModelfv(GL_LIGHT_MODEL_AMBIENT,model_ambient);//启用光照glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);//启用混合glEnable(GL_BLEND);//启用抗锯齿glEnable(GL_POIN