投影矩阵的推导

投影矩阵的推导

ID:37677041

大小:378.39 KB

页数:32页

时间:2019-05-28

投影矩阵的推导_第1页
投影矩阵的推导_第2页
投影矩阵的推导_第3页
投影矩阵的推导_第4页
投影矩阵的推导_第5页
资源描述:

《投影矩阵的推导》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、投影矩阵的推导 (OpenGL D3D)OpenGL矩阵推导——模型视图变化在三维编程中,模型视图变换是从三维世界到二维屏幕中一个很重要的变换,但是这个变换往往很多人都不太理解,要么是事而非。而这方面的文章不是太少就是讲的太浅没有真正的理解模型视图变换,本人在这个过程中曾经走过很多歪路,不过好在最终在自己的不懈努力下终于降伏了这只猛虎。本人就以自己的理解,通过矩阵推导过程一步一步来了解模型视图变化,最后通过两个OpenGl的程序来进一步理解模型视图矩阵。先从一个基本的模型视图—透视投影变换讲起。透射投影是将相机空间中的点从视锥体(frustum)变换到规则观察体(Ca

2、nonicalViewVolume以下简称CVV)中,待裁剪完毕后进行透视除法的行为。透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。主流的3DAPIs都把透射投影的具体细节进行了封装,从而只需一个函数便可生成一个透射投影矩阵比如gluPerspective(),使得我们不需要了解其算法便可实现三维到二维的转化,然而实事是,一些三维图形或游戏开发人员遇到一些视图矩阵的问题往往会不知所措,比如视景体裁剪。以下部分内容是从别处那转过来

3、的,主要感谢Twinsen和一个叫丁欧南的高中生。透视投影变换是在齐次坐标下进行的,而齐次坐标本身就是一个令人迷惑的概念,这里我们先把它理解清楚。齐次坐标对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v =v1 a +v2 b+ v3 c(1)而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得p – o =p1 a+ p2 b +p3 c(2)从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量——p–o(有的书中把这样的向量叫做位置向量——起始于坐标

4、原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p:p = o +p1 a+ p2 b +p3 c(3)(1)(3)是坐标系下表达一个向量和点的不同表达方式。这里可以看出,虽然都是用代数分量的形式表达向量和点,但表达一个点比一个向量需要额外的信息。如果我写出一个代数分量表达(1,4,7),谁知道它是个向量还是个点!我们现在把(1)(3)写成矩阵的形式:这里(a,b,c,o)是坐标基矩阵,右边的列向量分别是向量v和点p在基下的坐标。这样,向量和点在同一个基下就有了不同的表达:3D向量的第4个代数分量是0,而3D点的第4个代数分量是1。像这种这种用4个代数

5、分量表示3D几何概念的方式是一种齐次坐标表示。“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S.Hill,JR这样,上面的(1,4,7)如果写成(1,4,7,0),它就是个向量;如果是(1,4,7,1),它就是个点。下面是如何在普通坐标(OrdinaryCoordinate)和齐次坐标(HomogeneousCoordinate)之间进行转换:从普通坐标转换成齐次坐标时,如果(x,y,z)是个点,则变为(x,y,z,1);如果(x,y,z)是个向量,则变为(x,y,z,0)从齐次坐标转换成普

6、通坐标时,如果是(x,y,z,1),则知道它是个点,变成(x,y,z);如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)以上是通过齐次坐标来区分向量和点的方式。从中可以思考得知,对于平移T、旋转R、缩放S这3个最常见的仿射变换,平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向,这可以通过下面的式子清楚地看出:而旋转和缩放对于向量和点都有意义,你可以用类似上面齐次表示来检测。从中可以看出,齐次坐标用于仿射变换非常方便。此外,对于一个普通坐标的点P=(Px,Py,Pz),有对应的一族齐次坐标(wPx,wPy,wPz,w),其中w不等于零

7、。比如,P(1,4,7)的齐次坐标有(1,4,7,1)、(2,8,14,2)、(-0.1,-0.4,-0.7,-0.1)等等。因此,如果把一个点从普通坐标变成齐次坐标,给x,y,z乘上同一个非零数w,然后增加第4个分量w;如果把一个齐次坐标转换成普通坐标,把前三个坐标同时除以第4个坐标,然后去掉第4个分量。由于齐次坐标使用了4个分量来表达3D概念,使得平移变换可以使用矩阵进行,从而如F.S.Hill,JR所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。