欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    opengl立方体的简单三维交互式几何变换实验报告+代码.docx

    • 资源ID:82391035       资源大小:71.11KB        全文页数:14页
    • 资源格式: DOCX        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    opengl立方体的简单三维交互式几何变换实验报告+代码.docx

    opengl立方体的简单三维交互式几何变换实验报告+代码opengl立方体的简单三维交互式几何变换实验报告+代码 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(opengl立方体的简单三维交互式几何变换实验报告+代码)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为opengl立方体的简单三维交互式几何变换实验报告+代码的全部内容。立方体的简单三维交互式几何变换这个学期对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); / 四边形的右下 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); 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,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,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, -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, 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 reshape(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_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(); /重新调用绘制函数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); / 初始 GLUT。glutInitDisplayMode (GLUT_DEPTH |GLUT_DOUBLE | GLUT_RGB); /设定显示模式 glutInitWindowSize(400,400); / 设定窗口大小glutInitWindowPosition(50,100); / 设定窗口位置glutCreateWindow(”立方体的简单三维交互式几何变换”); / 用前面指定参数创建glutReshapeFunc(reshape); /指定重绘回调函数glutDisplayFunc(display); / 进行一些初始化工作glutKeyboardFunc( myKeyboard); /指定键盘回调函数 glutSpecialFunc(myspecialKeyboard); /指定键盘回调函数init();glutMainLoop();/ 进入无穷循环,等待事件处理功能截图:立方体的平移:上平移下平移:左平移:右平移:放大:缩小:旋转:源程序:#include stdlib.h>include GL/glut.h> include windows.h>float ratX = 60;float ratY = 60;float ratZ = 60;float tx=0;float ty=0;float sf=0;void DrawBox() glBegin(GL_QUADS); /前面 glColor3f(1,0,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,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); 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,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,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, -1.0f, 1。0f); / 四边形的右下 glVertex3f(1.0f, 1.0f, 1。0f); / 四边形的右上 glVertex3f(1。0f, 1.0f, -1.0f); / 四边形的左上 glEnd();void display()glClear(GL_COLOR_BUFFER_BITGL_DEPTH_BUFFER_BIT); /清空颜色和深度缓存glMatrixMode(GL_MODELVIEW);glLoadIdentity();/gluLookAt(2。0, 2。0, 2。0, 0.0, 0.0, 0。0, 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();void reshape(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);void init()glClearColor (1.0, 1.0, 1。0, 1。0); glEnable(GL_DEPTH_TEST); /启动深度测试模式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(); /重新调用绘制函数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();int main(int argc, char* argv)glutInit(&argc,argv); / 初始 GLUT.glutInitDisplayMode (GLUT_DEPTH GLUT_DOUBLE GLUT_RGB); /设定显示模式 glutInitWindowSize(400,400); / 设定窗口大小glutInitWindowPosition(50,100); / 设定窗口位置glutCreateWindow(”立方体的简单三维交互式几何变换"); / 用前面指定参数创建glutReshapeFunc(reshape); /指定重绘回调函数glutDisplayFunc(display); / 进行一些初始化工作glutKeyboardFunc( myKeyboard); /指定键盘回调函数 glutSpecialFunc(myspecialKeyboard); /指定键盘回调函数init();glutMainLoop();/ 进入无穷循环,等待事件处理

    注意事项

    本文(opengl立方体的简单三维交互式几何变换实验报告+代码.docx)为本站会员(可****阿)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开