3D数学 ---- 矩阵和线性变换 (4)

注意一个物体只能“镜像”一次,如果再次镜像(当沿不同的轴或平面的时候),物体将翻回“正面”(用一张纸来想象),这和在原位置旋转物体的效果一样。

切变

切变是一种坐标系“扭曲”变换,非均匀地拉伸它。切变的时候角度会发生变化,但令人惊奇的是面积和体积却保持不变。基本思想是将某一坐标的乘积加到另一个上。例如,2D中将y乘以某个因子然后加到x上,得到 x\' = x + sy,如图8.17所示:

3D数学 ---- 矩阵和线性变换

实现这个切变变换的矩阵为:

3D数学 ---- 矩阵和线性变换

变换的组合

设想世界中有一个任意方向、任意位置的物体,我们要把它渲染到任意方向、任意位置的摄像机中。为了做到这一点,必须将物体的所有顶点从物体坐标系变换到世界坐标系,接着再从世界坐标系变换到摄像机坐标系。其中的数学变换总结如下:

3D数学 ---- 矩阵和线性变换

矩阵乘法满足结合律,所以我们能用一个矩阵直接从物体坐标系变换到摄像机坐标系:

3D数学 ---- 矩阵和线性变换

这样就能在渲染的循环外先将所有矩阵组合起来,使循环内作矩阵乘法的时候只需要和一个矩阵相乘即可(物体有很多顶点,省一次矩阵乘法就会提高不少效率),如下:

3D数学 ---- 矩阵和线性变换

所以矩阵组合从代数角度看是利用了矩阵乘法的结合律。矩阵的行向量就是变换后的基向量,这在多个变换的情况下也是成立的。考虑矩阵乘法AB,结果中的每一行都是A中相应的行与矩阵B相乘的结果。换言之,设a1, a2, a3为A的行,矩阵乘法能够写为:

3D数学 ---- 矩阵和线性变换

这使得结论更加清晰,AB结果中的行向量确实是对A的基向量进行B变换的结果。

变换分类

变换的类别并不是互斥的,也不存在一定的“次序”或“层次”使得某一类比另一类多或少一些限制。

当讨论一般意义上的变换时,我们将使用类似的术语:映射或函数。在最一般的意义上,映射就是一种简单的规则,接受输入,产生输出。我们把从abF映射记作F(a) = b

线性变换

在数学上,如果满足下式,那么映射F(a)就是线性的:

F(a + b) = F(a) + F(b)   以及  F(ka) = kF(a)

如果映射F保持了基本运算:加法和数量乘,那么就可以称该映射为线性的。在这种情况下,将两个向量相加然后再进行变换得到的结果和先分别进行变换再将变换后的向量相加得到的结果相同。同样,将一个向量数量乘再进行变换和先进行变换再数量乘的结果也是一样的。

这个线性变换的定义有两条重要的引理:

(1) 映射F(a) = aM,当M为任意方阵时,说映是一个线性变换,这是因为:

F(a + b) = (a + b)M = aM + bM = F(a) + F(b)

F(ka) = (ka)M = k(aM) = kF(a)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfwxf.html