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

这种技术也能应用到3D转换中。2D中有两个基向量,构成"L"型;3D中有三个基向量,它们形成一个”三脚架“。首先,让我们展示出一个转换前的物品。图7.4展示了一个茶壶,一个立方体。基向量在”单位“向量处。

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

(为了不使图形混乱,没有标出z轴基向量[0, 0, 1],它被茶壶和立方体挡住了。)

现在,考虑以下3D变换矩阵:

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

从矩阵的行中抽出基向量,能想象出该矩阵所代表的变换。变换后的基向量、立方体、茶壶如图7.5所示:

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

这个变换包含z轴顺时针旋转45度和不规则缩放,使得茶壶比以前”高“。注意,变换并没有影响到z轴,因为矩阵的第三行是[0, 0 , 1]。

我们可以通过让比例因子k按比例放大或缩小来缩放物体。如果在各方向应用同比例的缩放,并且沿原点“膨胀”物体,那么就是均匀缩放。均匀缩放可以保持物体的角度和比例不变。如果长度增加或减小因子k,则面积增加或减小k^2。在3D中,体积将增加或减小 k^3。

如果需要“挤压”或"拉伸"物体,在不同的方向应用不同的因子即可,这称作非均匀缩放。非均匀缩放时,物体角度将发生变化。视各方向缩放因子的不同,长度、面积、体积的变化因子也各不相同。

如果|k|<1,物体将“变短”;如果|k|>1,物体将“变长”,如果k = 0,就是正交投影,如果k < 0就是镜像。

应用非均匀缩放的效果类似于切变,事实上,非均匀缩放和切变和很难区分的。

沿坐标轴的缩放

最简单的缩放方法是沿着每个坐标轴应用单独的缩放因子,缩放是沿着垂直的轴(2D中)或平面(3D中)进行的。如果每个轴的缩放因子相同,就是均匀缩放,否则是非均匀缩放。

2D中有两个不同的缩放因子,Kx和Ky,图8.13展示了应用不同缩放因子后的情况。

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

凭直觉就可知道,基向量pq由相应的缩放因子单独影响:

p\' = Kxp = Kx [1   0] = [Kx   0]

q\' = Kyq = Ky [0   1] = [0   Ky]

用基向量构造矩阵,结果如公式8.6所示:

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

对于3D,需要增加第三个缩放因子Kz,3D缩放矩阵如公式8.7所示:

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

沿任意方向缩放

我们可以不依赖于坐标系而沿任意方向进行缩放,设n为平行于缩放方向的单位向量,k为缩放因子,缩放沿穿过原点并平行于n的直线(2D中)或平面(3D中)进行。

我们需要推导出一个表达式,给定向量v,可以通过vn和k来计算v\'。为了做到这一点,将v分解为两个分量,v||和v⊥,分别平行于n和垂直于n,并满足v =v|| + v⊥。v||是vn上的投影,由 (v . n)n 可以得到 v||。因为v⊥垂直于n,它不会被缩放操作影响。因此,v\' = v||\' + v⊥,剩下的问题就是怎样得到v||\'。由于v||平行于缩放方向,v||\'可以由公式kv||得出,如图8.14所示:

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

总结已知向量并进行代换,得到:

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

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

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