投影矩阵的计算过程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

主要的的投影有两种,透视投影和正交投影,正交投影相对来说更简单,所以先来看看正交投影。先从最简单的正交变换矩阵开始100001000001这个正交变换是不可逆变换,变换后x和y保留,z变成了0,在实际应用中,更常见的情况是限定x、y、z在一定的范围内的进行投影变换,比如x[l,r],y[b,t],z[n,f]。那么要把这段空间中的点变换到-1和1之间,只要完成两个变换,首先把坐标轴移到中心,然后进行缩放就可以了。采用列向量的话,那就是缩放矩阵乘以平移矩阵。2/(r-l)000100-(r+l)/22/(r-l)00-(r+l)/(r-l)02/(t-b)00x010-(b+t)/2=02/(t-b)0-(t+b)/(t-b)002/(f-n)0001-(n+f)/2002/(f-n)-(f+n)/(f-n)000100010001透视投影类比于我们人眼系统,看一个物体,会有远小近大的效果。在转换到相机空间后,相机是这个空间的原点,和正交投影体是一个长方体或者立方体不同,透视投影体是一个锥体被近平面截取掉头部剩下的空间。假定仍然采用上面的坐标表示。在透视投影下,空间上面的任何一点P投影到近平面上某点q,通过三角几何学我们可以得到qx=px*n/pz,y点同理。假定直接投影到近平面,则该矩阵很简单,用Ma表示下面的矩阵100001000010001/n0则齐次空间某点(x,y,z,1)被该矩阵转换后变成了(x,yz,z/n),除以z/n,则变成了(nx/z,ny/z,n,1)正好吻合上面的公式。但是我们知道投影变换需要把坐标变换到-1和1之间,假定先不考虑z轴的变换,在x轴和y轴上面经过上述变换后,已经投影在近平面了,假设近平面xy在[l,r]和[b,t]之间了,因此只需要和上面的正交投影一样,进行平移和缩放操作就可以了,平移矩阵Mb为100-(l+r)/2010-(t+p)/2001-(f+n)/20001以及缩放矩阵Mc2/(r-l)00002/(t-b)00002/(f-n)00001McXMbXMa得到的矩阵为2/(r-l)0-(r+l)/(n*(r-l))002/(t-b)-(t+b)/(n*(t-b))000jk001/n0jk为未知数,这个矩阵也可以同时乘以n,则变为2n/(r-l)0-(r+l)/(r-l)002n/(t-b)-(t+b)/(t-b)000jk0010为了求解Jk,我们需要把z变换到-1和1因此当z=n时为-1,z=f时为1(j*n+k)/n=j+k/n=-1;同理j+k/f=1;得到k=2f*n/(n-f)j=-(n+f)/(n-f)代入上面的矩阵,就得出通用的正交变换矩阵。而且在一般情况下r=-l,b=-t因此上述矩阵可以简化为n/r0000n/t0000-(n+f)/(n-f)2f*n/(n-f)0010n/r和n/t可以进一步简化成水平半视角和垂直半视角的三角函数来表示,而水平视角和垂直视角和透视窗口的宽高比有是成正比的,最终上面两行可以用宽高比和某个半视角的余切来表示。以上内容是在列向量情况下得出的投影矩阵,如果采用行向量,只需要把上面的矩阵转置一下即可。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功