4x4矩阵最后一个元素的意义?

时间:2012-04-10 18:48:59

标签: graphics matrix 3d direct3d

我希望在4x4矩阵im转移上搭载漂浮值。所讨论的矩阵用于各种xyz矢量变换。据我所知,矩阵的前3x3便于旋转和缩放变换,前3行的第4个值偏移变换的枢轴,底行的前3个元素进行位置偏移,但最后一个是什么元素呢?据我所知,它一直是1并且绝对没有任何东西,对我有好处吗?

1 个答案:

答案 0 :(得分:8)

如果(如你的问题所示)约定是点是列向量,前3行的最后一个元素决定了转换,那么底行的前3个元素是不是位置偏移:变换矩阵的第4行用于透视投影,这是相机将3D点映射到2D视口的方式。如何使用4x4矩阵绘制点的草图:

result   =       4x4 matrix      *  point

[ x' ]       [ Rxx Rxy Rxz Tx ]     [ x ]
[    ]       [                ]     [   ]     ->    R** is the rotation/scaling matrix
[ y' ]       [ Ryx Ryy Ryz Ty ]     [ y ]
[    ]   =   [                ]  *  [   ]           T* is the translation vector
[ z' ]       [ Rzx Rzy Rzz Tz ]     [ z ]
[    ]       [                ]     [   ]           P* fixes the camera projection plane
[ w' ]       [ Px  Py  Pz  Pw ]     [ w ]

-> x' = dot_product3([Rxx,Rxy,Rxz], [x,y,z])  + Tx * w
-> y' = dot_product3([Ryx,Ryy,Ryz], [x,y,z])  + Ty * w
-> z' = dot_product3([Rzx,Rzy,Rzz], [x,y,z])  + Tz * w
-> w' = dot_product4([Px,Py,Pz,Pw], [x,y,z,w])

3D点的最后一步 - > 2D屏幕映射除以第4个(w')坐标 - 因此,对于标准几何变换,最后一行通常应为[0,0,0,1],这样w坐标保持不变。 / p>

如果底行的前3个元素不是0,则矩阵通常会产生3D空间的奇怪,非均匀失真。并且,尽管可以将最后一个元素用作均匀的反比例因子,但最好使用左上3x3子矩阵进行缩放,并将底行专用于相机。