实验3-opengl几何变换.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验 3 OpenGL 几何变换 1. 实验目的 理解并掌握 OpenGL二维平移、 旋转、 缩放变换的方法 2. 实验内容 (1)阅读实验原理,运行示范实验代码,掌握0penGL程序平移、旋转、缩放变换 的方法 (2)根据示范代码,完成实验作业 3. 实验原理 (1)OpenGL下的几何变换 在OpenGL的核心库中,每一种几何变换都有一个独立的函数,所有变换都在三 维空间中定义 平移矩阵构造函数为glTranslatef,d(tx, ty, tz), 作用是把当前矩阵和一 一个表示移动物体的矩阵相乘 tx 、 ty、 tz指定这个移动物体的矩阵,它们可以 是任意的实数值,后缀为f (单精度浮点float)或d(双精度浮点double),对于二维应 用来说, tz=0.0 旋转矩阵构造函数为glRotatef,d(theta, vx, vy, vz),作用是把当前矩阵 和一个表示旋转物体的矩阵相乘 theta, vx, vy, vz指定这个旋转物体的矩阵,物 体将围绕 (0,0,0)到(x,y,z) 的直线以逆时针旋转, 参数theta表示旋转的角度.向 量 v= (vx,vy,vz)的分量可以是任意的实数值,该向量用于定义通过坐标原点的旋 转轴的方向,后缀为 f(单精度浮点 float)或 d (双精度浮点double),对于二维旋转 来说, vx=0.0, vy=0.0, vz=1.0 缩放矩阵构造函数为glScalef,d(sx, sy, sz),作用是把当前矩阵和一个表 示缩放物体的矩阵相乘 sx, sy, sz指定这个缩放物体的矩阵,分别表示在x, y, z方向上的缩放比例, 它们可以是任意的实数值,当缩放参数为负值时,该函数为 反射矩阵,缩放相对于原点进行,后缀为 f(单精度浮点 float)或d(双精度浮点 double) 注意这里都是说 “把当前矩阵和一个表示移动旋转, 缩放物体的矩阵相乘”, 而不是直接说 “这个函数就是旋转”或者 “这个函数就是移动”,这是有原因的, 马上就会讲到 假设当前矩阵为单位矩阵, 然后先乘以一个表示旋转的矩阵R, 再乘以一个表 示移动的矩阵 T,最后得到的矩阵再乘上每一个顶点的坐标矩阵 v 那么,经过变换 得到的顶点坐标就是 ((RT)v) 由于矩阵乘法满足结合率, ((RT)v)= (R(Tv)), 换 句话说, 实际上是先进行移动,然后进行旋转。即:实际变换的顺序与代码中写的 顺序是相反的。由于“先移动后旋转” 和 “先旋转后移动”得到的结果很可能 不同, 初学的时候需要特别注意这一点 (2) OpenGL下的各种变换简介 我们生活在一个三维的世界, 如果要观察一个物体, 我们可以: ② 从不同的位置去观察它(人运动,选定某个位置去看) (视图变换) ②移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或 缩小它 (物体运动,让人看它的不同部分) (模型变换) ③如果把物体画下来,我们可以选择是否需要一种“近大远小”的透视效果 另外, 我们可能只希望看到物体的一部分, 而不是全部 (指定看的范围) (投影变 换) ④ 我们可能希望把整个看到的图形画下来,但它只占据纸张的一部分,而不是 全部 (指定在显示器窗口的那个位置显示) (视口变换) 这些,都可以在 OpenGL中实现 从 “相对移动”的观点来看, 改变观察点的位置与方向和改变物体本身的位 置与方向具有等效性。在OpenGL中, 实现这两种功能甚至使用的是同样的函数 由于模型和视图的变换都通过矩阵运算来实现, 在进行变换前, 应先设置当 前操作的矩阵为“模型视图矩阵”。设置的方法是以 GL_MODE·VIEW为参数调用 glMatrixMode函数,例如: glMatrixMode(GL_MODELVIEW); 该语句指定一个4 x4的建模矩阵作为当前矩阵 通常, 我们需要在进行变换前把当前矩阵设置为单位矩阵 把当前矩阵设置 为单位矩阵的函数为: glLoadIdentity(); . 我们在进行矩阵操作时,有可能需要先保存某个矩阵,过一段时间再恢复

文档评论(0)

LF20190802 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档