计算机图形学大作业报告(灯光纹理映射)

上传人:F****n 文档编号:100169998 上传时间:2019-09-22 格式:DOC 页数:23 大小:184KB
返回 下载 相关 举报
计算机图形学大作业报告(灯光纹理映射)_第1页
第1页 / 共23页
计算机图形学大作业报告(灯光纹理映射)_第2页
第2页 / 共23页
计算机图形学大作业报告(灯光纹理映射)_第3页
第3页 / 共23页
计算机图形学大作业报告(灯光纹理映射)_第4页
第4页 / 共23页
计算机图形学大作业报告(灯光纹理映射)_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《计算机图形学大作业报告(灯光纹理映射)》由会员分享,可在线阅读,更多相关《计算机图形学大作业报告(灯光纹理映射)(23页珍藏版)》请在金锄头文库上搜索。

1、 大 作 业 报 告实验课程名称: 计算机图形学 学 生 姓 名: 班 级: 学 院(系): 学生学号: 指 导 教 师: 成 绩: 一、目的这次大作业是作为这学期的最后的一个考核,所以必须要用到所有的本学期学过的知识,比如 怎样画出三维图形,怎样在图像上在图像上添加纹理光照,怎样使用鼠标和键盘进行人机交互等。二、主要功能模块设计1 矩阵运算模块的设计:功能描述:程序启动后,这部分功能模块会为整个应用程序提供算法支持,具体是矩阵直接的相互运算,在2D向3D转化过程中会起到很重要的作用。代码设计:float vv(float * v1, float * v2)return v10 * v20 +

2、 v11 * v21 + v12 * v22;void vxv(float * n, float * v1, float * v2)n0 = v11 * v22 - v12 * v21; n1 = v12 * v20 - v10 * v22;n2 = v10 * v21 - v11 * v20;void loadIdentity(Matrix m)Matrix identity = 1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,0.0,0.0,1.0;for(int i = 0;i 4; i+)for(int j = 0;j 4;

3、 j+)mij = identityij;void preMultiply(Matrix p, Matrix m)int i , j;Matrix t;for( i = 0; i 4; i +)for( j = 0; j 4; j+)tij = pi0 * m0j + pi1 * m1j + pi2 * m2j + pi3 * m3j;for( i = 0; i 4; i +)for( j = 0; j 4; j +)mij = tij;2 显示图形模块的设计: 功能描述:该模块主要为所要画的图形进行描述,是绘制图形的主要函数,通过调用这个功能模块就能画出用于显示给用户的图形。 代码设计:/2

4、D图形的display函数void display()glClear(GL_COLOR_BUFFER_BIT);if(n = 1 & type =GL_LINE_STRIP) glBegin(GL_POINTS);glVertex2iv(vert0);glColor3f(0,0.5,0.5);glVertex2i(width-vert00-1,vert01);glEnd(); glColor3f(0,0.5,0.5);glBegin(GL_LINES); glVertex2i(width/2,0);glVertex2i(width/2,height-1);glEnd();glBegin(typ

5、e); for(int i = 0;in;i+) glVertex2i(width-verti0-1,verti1);glEnd();glColor3f(1,1,0); glBegin(type); for(int i = 0;in;i+) glVertex2iv(verti);glEnd();glutSwapBuffers();initQMesh();glutSetWindow(winid);glutPostRedisplay(); /3D图形的显示函数void modelDisplay()glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

6、glPushMatrix();float M16;for(int r = 0; r 4; r+) for(int c = 0; c 4; c+) M4 * c + r = CRMrc;glMultMatrixf(M);glScalef(zoom,zoom,zoom);drawQMesh();glPopMatrix();glPushMatrix(); glLightfv(GL_LIGHT0,GL_AMBIENT,amb);glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); glPopMatrix();glutSwapBuffers();3 键盘敲击

7、模块 功能描述:该功能主要为两个窗体添加键盘敲击事件,在2D窗体中主要添加了反走样效果,清除所画的图,点线转化功能,对于3D窗体主要添加了投影方式的变换,光源移动的功能代码设计:/2D绘制窗体的键盘敲击处理函数void keyboard(unsigned char key, int x,int y)switch(key)case a: antialiasing = ! antialiasing;/反走样效果if(antialiasing)glEnable(GL_BLEND);glEnable(GL_LINE_SMOOTH);elseglDisable(GL_BLEND);glDisable(G

8、L_LINE_SMOOTH);break;case c: n = 0;break; /清除界面功能case l: type = GL_LINE_STRIP;break; /绘制线功能case v: type = GL_POINTS;break; /绘制点功能glutPostRedisplay();/3D显示窗体的键盘敲击事件处理函数:void modelKeyboard(unsigned char key, int x, int y)switch (key) case o:glMatrixMode(GL_PROJECTION);/正投影 glLoadIdentity(); glOrtho(-4

9、,4,-4,4,6,14); glMatrixMode(GL_MODELVIEW); break;case p:glMatrixMode(GL_PROJECTION);/侧投影,不过是默认的 glLoadIdentity(); gluPerspective(45.0,1.0,6.0,14.0); glMatrixMode(GL_MODELVIEW); break; case m:lightPosition0 = lightPosition0 - 0.5;/光源移动 break; case n:lightPosition1 = lightPosition1 - 0.5; break; case

10、z:lightPosition2 = lightPosition2 - 0.5; break;case k:glDisable(GL_FOG); break; glutPostRedisplay();4鼠标点击模块功能描述:该功能模块主要实现了对两个窗体鼠标事件的处理,对于3D窗体实现了鼠标左键旋转,由键放大缩小的效果,2D窗体实现了左键画点,右键可以对已经存在的点改变它的位置。代码设计:/3D窗体的鼠标事件void modelMouse(int button,int state,int x,int y)switch (button)case GLUT_LEFT_BUTTON:if(state

11、 = GLUT_DOWN )cx = x;cy = h - 1 - y;dx = dy = 0;left_button_down = true;elseleft_button_down = false;break;case GLUT_RIGHT_BUTTON:if(state = GLUT_DOWN)cx = x;cy = h - 1 - y;right_button_down = true;elseright_button_down = false;break;/2D窗体鼠标事件void mouse(int button, int state, int x ,int y)y = height

12、 - 1 - y;switch(button)case GLUT_LEFT_BUTTON:if(state = GLUT_DOWN & ! rubberbanding )v = n+;vertv0 = (x = width) ? width - 1 : x;vertv1 = (y = height) ? height -1 : y;rubberbanding = true;glutPostRedisplay();else rubberbanding = false;break;case GLUT_RIGHT_BUTTON:if(state = GLUT_DOWN & ! rubberbanding & (v = findVertex(x,y) != -1) if(glutGetModifiers() = GLUT_ACTIVE_CTRL) for (int i

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号