资源描述:
《3D图形学实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字图像处理实验指导书《3D游戏图形学》实验指导书指导老师:马文娟姓名:戎洪洋学号:E09700223浙江理工大学二0一一年11月数字图像处理实验指导书实验三几何图形变换实验实验项目性质:设计性实验所属课程名称:3D游戏图形学实验计划学时:3学时一、实验目的和要求1.进一步掌握二维、三维变换的数学知识、变换原理、变换种类、变换方法;2.利用OpenGL实现二维、三维图形变换,在屏幕上显示变换过程或变换结果;3.掌握OpenGL常用的变换函数。二、实验内容1、下面的代码采用GLUT库,使用了双缓存,在按下鼠标左键后,程序在空闲时一直不停地调用spinDisplay函数,
2、实现了一个矩形在窗口中匀速转动(单击鼠标右键停止转动)。请修改代码,实现矩形在窗口内沿着水平线移动。#include#includestaticGLfloatspin=0.0;voiddisplay(void){glClear(GL_COLOR_BUFFER_BIT);glPushMatrix();glTranslatef(spin,0.0f,0.0f);glColor3f(1.0,1.0,1.0);glRectf(-10.0,-10.0,10.0,10.0);glPopMatrix();glutSwapBuffers();/
3、/交换双缓存}voidspinDisplay(void){spin=spin+0.02;if(spin>360.0)spin=spin-360.0;glutPostRedisplay();}voidinit(void){glClearColor(0.0,0.0,0.0,0.0);glShadeModel(GL_FLAT);}数字图像处理实验指导书voidreshape(intw,inth){glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho
4、(-50.0,50.0,-50.0,50.0,-1.0,1.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}voidmouse(intbutton,intstate,intx,inty){switch(button){caseGLUT_LEFT_BUTTON:if(state==GLUT_DOWN)glutIdleFunc(spinDisplay);//设备空闲时调用的函数break;caseGLUT_MIDDLE_BUTTON:caseGLUT_RIGHT_BUTTON:if(state==GLUT_DOWN)glut
5、IdleFunc(NULL);break;default:break;}}intmain(intargc,char**argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_DOUBLE
6、GLUT_RGB);//使用双缓存模式glutInitWindowSize(500,500);glutInitWindowPosition(100,100);glutCreateWindow(argv[0]);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMou
7、seFunc(mouse);glutMainLoop();return0;}2.已知某三角形的三顶点坐标{50.0,25.0},{150.0,25.0},{100.0,100.0}。要求:(1)创建一个长宽分别为600、600的窗口,窗口的左上角位于屏幕坐标(100,100)处。(提示:请试着修改gluOrtho2D函数参数,使得绘制的三角形尽可能居中显示)数字图像处理实验指导书(2)绘制一个由上述顶点所描绘的三角形,实现该三角形进行下列的几何变化:首先使三角形沿着其中心的x轴,y轴方向缩小50%;然后沿着初始中心旋转90度;最后沿着y轴平移100个单位。参考代码:#
8、include#includevoidinit(void){glClearColor(0.0,0.0,0.0,0.0);glShadeModel(GL_FLAT);}voiddraw_triangle(void){glBegin(GL_LINE_LOOP);glVertex2f(50.0,25.0);glVertex2f(150.0,25.0);glVertex2f(100.0,100.0);glEnd();}voiddisplay(void){glClear(GL_COLOR_BUFFER_BIT);glC