《计算机图形学-绘制太阳系.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《计算机图形学-绘制太阳系.doc》文档请在天天文库搜索。
1、实验名称:绘制太阳系(实验八)班级:信09-1学号:11姓名:王杰【实验目的】1. 掌握GLUT实用包中创建多面体以及二次曲面的函数2. 掌握OpenGL中的基本光照函数3. 对几何变换、投影变换等内容进行复习【实验内容】1.在窗口绘制三个球体,分别代表太阳、地球和月球2.为每个球体设置恰当的几何变换,要求:(1)太阳在场景中间(2)地球在自转的同时绕太阳旋转(3)月球在自转的同时绕地球旋转3.为场景添加适当的光照渲染4.源程序#include static int day = 365; // day的变化:从0到359void myDisplay(void){ glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadId。
2、entity(); gluPerspective(75, 1, 2, ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, -, , 0, 0, 0, 0, 0, 1); // 黄色的"太阳" glColor3f(1.0f, 2.0f, 0.0f); glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f); glutSolidSphere(, 100, 100); // 蓝色的"地球" glColor3f(0.0f, 2.0f, 1.0f); glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f); glTranslatef(, 0.0f, 0.0f); glutSolidSphere(, 100, 100); // 白色的"月亮" glColor3。
3、f(2.0f, 2.0f, 2.0f); glRotatef(day/30.0*360.0 - day/360.0*360.0, 0.0f, 0.0f, -1.0f); glTranslatef(, 0.0f, 0.0f); glutSolidSphere(, 100, 100); glFlush(); glutSwapBuffers();}void myIdle(void){ ++day; if( day >= 360 ) day = 0; myDisplay();}int main(int argc, char *argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowPosition(100, 100); glutInitWindowSize(500, 500); glutCreateWindow("王杰"); glutDisplayFunc(&myDisplay); glutIdleFunc(&myIdle); glutMainLoop(); return 0;}5.运行结果截图。