opengl立方体的简单三维交互式几何变换实验报告+代码.docx
《opengl立方体的简单三维交互式几何变换实验报告+代码.docx》由会员分享,可在线阅读,更多相关《opengl立方体的简单三维交互式几何变换实验报告+代码.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、opengl立方体的简单三维交互式几何变换实验报告+代码opengl立方体的简单三维交互式几何变换实验报告+代码 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(opengl立方体的简单三维交互式几何变换实验报告+代码)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为opengl立方体的简单三维交互式几何变换实验报告+代码的
2、全部内容。立方体的简单三维交互式几何变换这个学期对opengl的学习,使我对计算机图形学的一些算法过程有了更多的了解。因为对三维图形的显示比较感兴趣,就做了立方体的简单三维交互式几何变换。功能:键盘的方向键实现立方体的上下左右平移;A键,S键分别实现向前,向后旋转;J键,K键分别实现放大,缩小;C键退出。程序模块:1.该模块为绘制一个立方体.void DrawBox() glBegin(GL_QUADS); /前面 glColor3f(1,0,0); glVertex3f(1。0f, 1。0f, 1。0f); / 四边形的左下 glVertex3f( 1.0f, 1。0f, 1.0f); /
3、四边形的右下 glVertex3f( 1。0f, 1.0f, 1.0f); / 四边形的右上 glVertex3f(1。0f, 1.0f, 1.0f); / 四边形的左上 / 后面 glColor3f(0,1,0); glVertex3f(1。0f, -1.0f, -1。0f); / 四边形的右下 glVertex3f(1.0f, 1.0f, 1.0f); / 四边形的右上 glVertex3f( 1.0f, 1。0f, -1。0f); / 四边形的左上 glVertex3f( 1。0f, -1.0f, -1。0f); / 四边形的左下 / 顶面 glColor3f(0,0,1); glVer
4、tex3f(1.0f, 1。0f, 1.0f); / 四边形的左上 glVertex3f(1。0f, 1.0f, 1.0f); / 四边形的左下 glVertex3f( 1.0f, 1.0f, 1。0f); / 四边形的右下 glVertex3f( 1。0f, 1.0f, 1.0f); / 四边形的右上 / 底面 glColor3f(1,1,0); glVertex3f(1.0f, 1.0f, 1。0f); / 四边形的右上 glVertex3f( 1.0f, 1。0f, 1.0f); / 四边形的左上 glVertex3f( 1.0f, -1.0f, 1。0f); / 四边形的左下 glVe
5、rtex3f(1。0f, 1.0f, 1.0f); / 四边形的右下 / 右面 glColor3f(0,1,1); glVertex3f( 1.0f, 1.0f, 1.0f); / 四边形的右下 glVertex3f( 1。0f, 1。0f, 1。0f); / 四边形的右上 glVertex3f( 1.0f, 1.0f, 1.0f); / 四边形的左上 glVertex3f( 1.0f, -1.0f, 1.0f); / 四边形的左下 / 左面 glColor3f(1,0,1); glVertex3f(-1。0f, -1.0f, -1.0f); / 四边形的左下 glVertex3f(1。0f,
6、 -1。0f, 1。0f); / 四边形的右下 glVertex3f(1.0f, 1.0f, 1。0f); / 四边形的右上 glVertex3f(1。0f, 1。0f, 1。0f); / 四边形的左上 glEnd();2该模块设置屏幕颜色和深度缓存,设置立方体的平移,缩放,旋转变换。void display()glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); /清空颜色和深度缓存glMatrixMode(GL_MODELVIEW);glLoadIdentity();/gluLookAt(2.0, 2。0, 2.0, 0。0, 0.0, 0。0
7、, 0.0, 1.0, 0。0);glTranslatef(0.0f+tx,0。0f+ty,4.0f);/平移变换glScalef(1+sf,1+sf,1+sf); /缩放变换glRotatef(ratX, 1.0f, 0.0f, 0.0f);/绕X轴的旋转变换 glRotatef(ratY, 0.0f, 1。0f, 0.0f);/绕Y轴的旋转变换 glRotatef(ratZ, 0。0f, 0.0f, 1。0f);/绕Z轴的旋转变换DrawBox(); glFlush();glutSwapBuffers();3.该模块为重绘回调函数,在窗口首次创建或用户改变窗口尺寸时被调用。void res
8、hape(int w, int h) glViewport(0, 0, w, h);/ 指定视口的位置和大小glMatrixMode(GL_PROJECTION);glLoadIdentity();/glFrustum(-1.0, 1.0, -1。0, 1.0, 3。1, 10。0);/gluPerspective(45,1,0。1,10。0);glOrtho(-2.0, 2.0, -2.0, 2。0, 2。0, 10。0);4.该模块为设置深度缓存和启动深度测试模式。void init()glClearColor (1。0, 1。0, 1。0, 1。0); glEnable(GL_DEPTH
9、_TEST); /启动深度测试模式5.该模块为设置键盘的交互式操作。void myKeyboard(unsigned char key, int x, int y)if(key = a | key = A) ratX += 2; ratY += 2; ratZ += 2;if(key = s | key = S) ratX -= 2; ratY = 2; ratZ = 2;if(key = j key = J) sf+=0.1;if(key = k | key = K) sf-=0。1; if(key = c | key = C)exit(0);glutPostRedisplay(); /重新
10、调用绘制函数6。该模块为设置键盘方向键的交互式操作.void myspecialKeyboard(int key,int x,int y)if(key = GLUT_KEY_UP ) ty+=0.1; if(key = GLUT_KEY_DOWN) ty=0.1;if(key =GLUT_KEY_LEFT) tx-=0.1;if(key=GLUT_KEY_RIGHT) tx+=0。1;glutPostRedisplay();7.主函数模块,实现设置显示模式(窗口大小,位置),调用函数操作。int main(int argc, char* argv)glutInit(argc,argv); /
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- opengl 立方体 简单 三维 交互式 几何 变换 实验 报告 代码
限制150内