opengl坐标变换.pptVIP

  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文档。上传文档
查看更多
计算机图形学 OpenGL坐标变换 OpenGL坐标变换 * * 计算机图形学 一、了解OpenGL中的变换变换使得把3D坐标投影到2D场景成为可能。变换还使你能够旋转对象、移动对象,甚至拉伸、压缩和弯曲它们。和直接修改对象不同,在我们计算机的实现中,实际上是将物件的局部坐标系统变换成另外的坐标系统。 变换 用途 视图 指定观察者或摄影机的位置 模型 在场景中移动对象 模型视图 描述视图变换和模型变换的对偶性 投影 对视见空间进行修剪和改变大小 视见区 对到窗口的最终输出进行缩放 * * 计算机图形学 1、眼坐标眼坐标来自观察者的观察点,与可能发生的任何变换无关,可以把它们视为“绝对”屏幕坐标。因此,眼坐标并不是真正的坐标,而是代表一个虚拟的固定坐标系,用作参考的公共框架。 +y -y +x -x +x -x +y -y -z +z observer * * 计算机图形学 2、视图变换视图变换是第一个应用到场景上的变换。它用于确定场景的有利位置。默认情况下,观察点位于原点(0,0,0),顺着z轴的负向看。在工作时间表上,必须先指定视图变换再指定其他任何变换。这是因为它将把当前工作坐标系相对于眼坐标系移动。所有后继变换都将在最近修改的坐标系的基础上进行的。如何创建观察变换?    首先要做的就是清除当前的矩阵。使用glLoadIdentity( )功能函数来实现它。初始化好当前的矩阵后,就可以使用不同的方法来创建视图矩阵: * * 计算机图形学 (1)将视图矩阵设置为单位矩阵相同。它将使“摄像机”恢复为默认位置和方向,即位于原点并朝向z的负轴。 (2)使用gluLookAt( )功能函数指定一条从“摄像机”伸延出来的视线。 (3)使用平移和旋转命令glTranslate( )和glRotate( )。使用它们将世界中的物体相对于固定的“摄像机”进行移动。 (4)使用平移和旋转功能函数为你自己的坐标系统创建函数。 * * 计算机图形学 3、模型变换 模型变换是让你去定位和定向一个模型,移动旋转以及缩放它。 在模型变换中指定次序是非常重要的,因为它们会影响到场景的最终结果。 y x y x x1 y1 y1 x1 y x * * 计算机图形学 y x x x1 y1 y y y1 x1 x 4、模型视图的对偶性实际上,从内部效果和它们对场景最终外观的效果来说,视图变换 和模型变换是相同的,把这两者区分开完全是为了程序员的方便,向 后移动对象和向前移动参考系之间并没有本质差别。“模型视图”表示你可以把这类变换视为模型变换或视图变换,但 实际上并无区别。因此称它为“模型视图变换” * * 计算机图形学 5、投影变换投影变换定义了观察面积和剪切平面,它将在视图变换和模型变换 之后执行。可以将投影变换想象成它是用来确定哪些物件是位于观察 面积之内的,以及这些物件看上去是怎样的。两种类型的投影:正射投影透视投影 * * 计算机图形学 6、视口变换 最后的变换是视口变换。这种变换将投影变换创建的剪切坐标映射到 窗口的渲染表面。视口变换就是根据渲染表面的大小尺寸,来确定最 终图像是否被放大或者缩小。 二、OpenGL和矩阵 在OpenGL中如何实际地使用以上的变换? OpenGL中的变换依赖的 数学计算就是矩阵。 OpenGL使用了一个被称为矩阵堆栈的东西,它 对于构造由许多简单物体组成的复杂模型非常有用。 1、模型视图矩阵 模型视图矩阵定义了一个坐标系统,这个坐标系统是用来定位和定向 物体的。 在调用任何变换命令之前,必须指定是否想要去修改模型视图矩阵或 者投影矩阵。对这两个矩阵的修改是通过OpenGL的glMatrixMode( ) 功能函数来完成的。 * * 计算机图形学 glMatrixMode( ) 用途:指定当前矩阵 (GL_PROJECTION、GL_MODELVIEW、或GL_TEXTTURE) 描述:这个函数用于确定将哪个矩阵堆栈(GL_PROJECTION、GL_MODELVIEW、或GL_TEXTTURE) 例:恢复模型视图矩阵到默认的位置。 glMatrixMode(GL_MODELVIEW ); glLoadIdentity( ); (1)平移 实现平移函数: void glTranslate{fd} (TYPE x, TYPE y, TYPE z) (2)旋转 实现旋转函数: void glRotate{fd} (TYPE angle, TYPE x, TYPE y, TYPE z) * * 计算机图形学 (3)缩放 实现缩放函数: void glScale{fd} (TYPE x, TYPE y, TYPE z) 例:恢复投影矩阵到默认的位置。 glMatrixMode(GL_PROJ

文档评论(0)

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

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

1亿VIP精品文档

相关文档