Real-Time-Rendering 矩阵的其他变换及投影矩阵(三)

本文探讨了4x4矩阵在3D图形学中的应用,包括平移矩阵和投影变换。平移矩阵利用4x4矩阵的第四个分量实现坐标平移,而正交矩阵简化了矩阵运算,尤其是正交投影和透视投影,后者模拟了人类视觉系统的投影效果。文章还介绍了正交化和施密特正交化在处理矩阵精度和正交性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        接下来我们讨论矩阵的平移、投影变换,在计算机图形学中这两种变换也及其常用。

一、4x4矩阵

        在讨论位移矩阵前,我们需要引出4x4矩阵的相关概念。

        4D向量有4个分量,前三个是标准的x、y、z分量,第四个是w,有时称为齐次坐标。

        我们可以把齐次坐标理解为更高维度的抽象。比如2D坐标系中一个点在2D的扩展坐标齐次坐标中将有无数的点对应。他的形式为(x,y,w)。对于不在w=1平面的点,我们可以通过将x、y除以w来将这个点投影到w=1的平面。所以2D坐标系中的齐次坐标(x,y,w)其实映射的实际2D点为(x/w,y/w)。3D坐标系同理。

        为什么引入4x4矩阵,第一个原因是因为方便的记法,在平移矩阵中将会讨论。第二个原因是因为w的映射性质。

二、平移矩阵

        在上一章中我们讨论的都是用3x3矩阵表示的线性变换,不包含平移。因为矩阵乘法的性质,零向量总是变化成零向量。显然无法描述分量加、减这样的平移操作。而4x4矩阵提供了数学上的技巧帮我们做到这一点。

        暂时假设w总是等于1,那么,标准3D向量[x,y,z]对应的4D向量为[x,y,z,1]。任意3x3变换矩阵在4D中表示为:

        \begin{bmatrix} m_{11} & m_{12} &m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} &m_{32} & m_{33} \end{bmatrix} => \begin{bmatrix} m_{11} & m_{12} &m_{13} & 0 \\ m_{21} & m_{22} & m_{23}& 0 \\ m_{31} &m_{32} & m_{33} & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}

        \begin{bmatrix} m_{11} & m_{12} &m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} &m_{32} & m_{33} \end{bmatrix} \begin{bmatrix} x\\ y\\ z \end{bmatrix} = \begin{bmatrix} xm_{11} + ym_{12} + zm_{13}\\ xm_{21} + ym_{22} + zm_{23}\\ xm_{31} + ym_{32} + zm_{33} \end{bmatrix}

        \begin{bmatrix} m_{11} & m_{12} &m_{13}&0 \\ m_{21} & m_{22} & m_{23} &0\\ m_{31} &m_{32} & m_{33}&0 \\ 0 &0 & 0&1\end{bmatrix} \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix} = \begin{bmatrix} xm_{11} + ym_{12} + zm_{13} + 0 * 1\\ xm_{21} + ym_{22} + zm_{23} + 0 * 1\\ xm_{31} + ym_{32} + zm_{33} + 0 * 1\\ 1 \end{bmatrix}

        可以发现中间的3x3矩阵依然可以代表线性变换改变向量的x、y、z分量,如果我们想屏蔽线性变换只需中间的3x3方阵改变为单元矩阵即可。而现在x、y、z分量同时被4x4矩阵的第四列所影响(如果矩阵以行为主,则是第四行)。只是因为我们都设为0,所以他并没有向量带来实际变换,但他却有加减的特性,利用此数学技巧我们可以利用矩阵的第四列实现向量的平移变换。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值