Real-Time-Rendering 矩阵的线性变换(二)

本文深入探讨3D图形学中的线性变换,包括旋转、缩放、镜像和切变。在2D和3D坐标系中,详细阐述了各种变换的矩阵表示,例如绕x、y、z轴的旋转,沿任意轴的缩放和反射,并介绍了切变的概念。通过矩阵运算理解这些变换如何影响坐标系中的向量和点。
摘要由CSDN通过智能技术生成

        上一章节讨论了矩阵的基本性质,其中提到了线性变换。什么是线性变换呢。在数学上如果满足下式,则矩阵对一个向量的变幻是线性的。

        \mathbf{F}(\mathbf{a } + \mathbf{b }) = \mathbf{F}(\mathbf{a }) + \mathbf{F}(\mathbf{b })

        \mathbf{F}(k\mathbf{a}) = k\mathbf{F}(\mathbf{a})

        一般情况下线性变换为形如:F(a) = aM。根据之前向量和矩阵的性质,显然此式满足如上两个条件。是线性的。

        零向量的任意线性变换结果仍是零向量。

        显然上述性质不存在位置偏移的情况,所以线性变化不涉及位移,在下面的变化中任意轴都默认经过坐标系原点。

        下面介绍一些矩阵的基本线性变换。

一、旋转

        我们从2D坐标系中开始分析。

        根据前面的章节我们知道反向构建线性变换的矩阵只需获得旋转后的基向量即可。所以我们只需计算出旋转后的基向量即可获得2D坐标系的旋转矩阵。

2D坐标系旋转矩阵的推导

        在给出3D坐标系旋转矩阵之前我们需要先约定旋转方向的正负。在左手坐标系中我们通过左手法则定义正方向的朝向。同样在右手坐标系中我们用右手法则定义正方向的朝向。左右手法则

        在左手坐标系中,我们举起左手。大拇指指向旋转轴的正方形。四指弯曲的方向即旋转的正方向。在右手坐标系中举起右手即可。左右手坐标系作为对方向的约定,但并不影响底层的计算,结果是完全一致的。

        在3D坐标系中,如果我们仅绕x轴或y轴或z轴旋转,类比之前2D坐标系旋转矩阵的推导,很容易获得其旋转矩阵。(注:如之前所说遵循unity的常规约定使用列向量,矩阵以列为主。使用左手坐标系且矩阵以列向为主)

        绕x轴:

        \begin{bmatrix} 1 & 0 & 0\\ 0& cos\theta & -sin\theta\\ 0& sin\theta & cos\theta \end{bmatrix}

        绕y轴:

        \begin{bmatrix} cos\theta & 0 & sin\theta\\ 0& 1 & 0\\ -sin\theta& 0 & cos\theta \end{bmatrix}

        绕z轴:

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值