资源描述:
《图形学实验报告-分形雪花》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、计算机图形学实验报告姓名:张晓波学号:090081322010年10月实验1实用OpenGL绘制二维图形实验目的1-初步了解0penGL程序的框架。2.掌握利用0penGL绘制简单二维、三维视图的方法。3.利用0penGL中的三角形绘制函数,绘制分维图形。实验要求1.明确实验目的,按实验内容及基本步骤完成实验。2.在实验过程中,结合思考与探究中的问题,通过实验进行理解。3.理解并掌握木实验的内容。实验内容及基本步骤1.绘制三角形利用0penGL提供的绘制三角形的函数,绘制三角形voidtriangle(Vera,Verb,Verc){glBegin(GL_TRIANGLES);glV
2、ertex2fv(a);glVertex2fv(b);glVertex2fv(c);glEnd();}2,利用绘制三角形的迭代,绘制雪花状的分维体。#importHMyView.hM#includeinclude#inelude#defineDEEP5©implementationMyViewtypedefGLfloatVer[2];VerA={-0・9,・0・5};VerB={0.9,-0.5};VerC={0,1};・(void)prepareOpenGL{glClearColor(0.9350.9350
3、.93,1);//经多次实验将背景配色调为与窗口相同的银白色}-(id)initWithFrame:(NSRect)frame{self=[superinitWithFrame:frame];if(self){}returnself;}voidtriangle(Vera,Verb,Verc){glBegin(GL_TRIANGLES);glVertex2fv(a);glVertex2fv(坊;glVertex2fv(c);glEnd();}voidSnowFlower(Vera,Verb,Verc,intdeep){Verv0,v1,v25v35v4,v5,v65v7,v8,v95v
4、10,v11,v12,v13,v14,v15,v16,v17;v10[0]=a[0];v10[1]=a[1];v14[0]=b[0];v14[1]=b[1];v0[0]=c[0];v0[1]=c[1];intj;if(deep>0){triangle(v0,v10,v14);for(j=0;j<2;j++){v1[j]=v0[j]*2/3+v10[j]/3;v4[j]=v0[j]*2/3+v10[j]/3;}for(j=0;j<2;j++){v2[j]=v0[j]*2/3+v14[j]/3;v6[j]=v0[j]*2/3+v14[j]/3;}for(j=0;j<2;j++){v3[j
5、]=v0[j]*2/3+v10[j]*2/3-v14[j]/3;}for(j=0;j<2;j++)v7[j]=v0[j]*2/3+v14[j]*2/3-v10[j]/3;}for(j=0;j<2;j++){v5[j]=v10[j]*2/3+v0[j]/3;v9[j]=v10[j]*2/3+v0[j]/3;}for(j=0;j<2;j++){v12[j]=v14[j]*2/3+v0[j]/3;v8[j]=v14[j]*2/3+v0[j]/3;}for(j=0;j<2;j++){v11[j]=v10[j]*2/3+v14[j]/3;v15[j]=v10[j]*2/3+v14[j]/3;}
6、for(j=0;j<2;j++){v13[j]=v14[j]*2/3+v10[j]/3;v16[j]=v14[j]*2/3+v10[j]/3;}for(j=0;j<2;j++){v17[j]=v14[j]*2/3+v10[j]*2/3-v0[j]/3;}SnowFlower(vO,v1,v2,deep-1);SnowFlower(v3,v4,v5,deep-1);SnowFlower(v6,v7,v8,deep-1);SnowFlower(v9,v10,v11,deep-1);SnowFlower(v12,v13,v14,deep-1);SnowFlower(v15,v16,v17,
7、deep-1);}elsetriangle(vO,v10,v14);}分维图形的层数由DEEP控制默认值为5,如要改变,则直接在代码里面修改。当deep=3时,图形如下:实验小结:做这个实验是笫一次实用OpenGL,所以感觉以开始上手很难,需要从头了解OpenGL程序的框架,尤其是上课的时候教的时候是基于VC平台的,而最终我使用的是基于苹果电脑里的Xcode编写的,所以又稍有不同,但是OpenGL的绘图思想始终是相同的。就我口己的理解来讲,它是提供了一个虚