一、1.Pleasedownloadandinstalltheglutlibrary.2.WriteacompleteprogramusingthefollowingcodestodrawaSierpinskigasket.voidmyinit(){//attributesglClearColor(1.0,1.0,1.0,1.0);glColor3f(1.0,0.0,0.0);//setupviewingglMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,50.0,0.0,50.0);glMatrixMode(GL_MODELVIEW);}voiddisplay(){GLfloatvertices[3][3]={{0.0,0.0,0.0},{25.0,50.0,0.0},{50.0,0.0,0.0}};//anarbitrarytriangleintheplanez=0;GLfloatp[3]={7.5,5.0,0.0};//orsetanydesiredinitialpointwhichisinsidethetriangle;intj,k;intrand();glBegin(GL_POINTS);for(k=0;k<5000;k++){/*pickarandomvertexfrom0,1,2*/j=rand()%3;//computenewlocation;p[0]=(p[0]+vertices[j][0])/2;p[1]=(p[1]+vertices[j][1])/2;//displaynewpointglVertex3fv(p);}glEnd();glFlush();}#includevoidmain(intargc,char**argv){glutInit(&argc;,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitAWindowSize(500,500);glutInitWindowPosition(0,0);glutCreateWindow(“SimpleOpenGLExample”);glutDisplayFunc(display);myinit();glutMainLoop();}3.实现DDA和Bresenham画线算法(1)画10万以上随机生成的直线段,比较两个算法的平均时间.(2)分别把屏幕上的1*1,5*5,9*9像素当作直线段上的一个点,观察线段的走样情况.二、请写一个OpenGL(如果熟悉WebGL也可以用)程序完成如下任务(1)读入三维网格模型的obj文件;(2)用OpenGL函数glTranslatef()对模型模型进行平移,使得其重心位于原点;(3)用函数glLookAt()设置视点,并且要求试点绕模型一周,以便用透视投影观察各个侧面;(4)要求利用真实感绘制对模型进行渲染.(利用OpenGL函数设置光源,材质,计算好每个三角形的法向量后,利用OpenGL的glNormal函数给待绘制的三角形设置法向量).绘制的结果大概如下:三、本实验为综合实验,任务是利用光线跟踪算法进行Whitted全局光照计算,并对读入场景进行真实感绘制。
(特别提示:网上类似的projects可以参考,但不能照抄.如http://tobias.isenberg.cc/graphics/LabSessions/RaytracingProject,http://physbam.stanford.edu/links/ray_tracing/project_ray_tracing.htmlhttps://www.cs.utexas.edu/~fussell/courses/cs354/assignments/raytracing/handout.shtml)(1)参加对象:本实验针对所有选课同学,3-5人组成一个小组,共同实现;
非15级同学在组队方面有困难的话可与老师沟通.(2)实验结果提交:每人都要求提交一份.内容包括a.源程序;可执行代码;三维场景数据;同组的同学这部
1