一般来说,方阵能够描述任意的线性变换。线性变换的定义在文章中已经提到。线性变换具体来说包括:旋转、缩放、投影、镜像、仿射。本文以旋转为例讲述矩阵的几何意义。

一、基础解释

向量是基向量的线性组合,矩阵是基向量的集合。

世界坐标系中的某一个向量,可以使用该坐标系的基向量进行表示,这点是在线性代数中学习过的,此处再简单解释下基向量。

我们常见的三维坐标系由X、Y、Z三个坐标轴组成,基向量就是x,y,z,他们定义了轴的方向和单位向量的长度。例如(2,5,8)其实就是在基向量x方向取2个单位长度,在基向量y方向取5个单位长度,在基向量z方向取8个单位长度,三个分量交汇的地方就是(2,5,8)。转化称为通用的公式,则如下图所示。

矩阵点积和叉积Python 矩阵点积 几何意义_世界坐标系


在此基础上,将矩阵解释为基向量集合,即每一行都是一组基向量。具体看下图。假设在世界坐标系下的向量[x,y,z]与矩阵相乘,我们发现最后的结果将(x,y,z)在新的基向量(p,q,r)下进行了描述。我们可以发现其中的关键点:如果把矩阵的每一行解释为坐标系的基向量,那么向量与该矩阵相乘,就相当于对向量做了一次坐标转换,从原本的世界坐标系下转换到由基向量(p,q,r)组成的新坐标系下了。

矩阵点积和叉积Python 矩阵点积 几何意义_矩阵点积和叉积Python_02

从这一点看,“转换”和“乘法”确实有千丝万缕的联系,这也就是为啥3D数学基础中最常见的运算是矩阵乘法了。当然,其实矩阵就是表达坐标变换的数学运算。下面我们将继续深入的了解矩阵的形式。

二、侧面解释

矩阵的每一行都能解释为转换后的基向量,矩阵可以代表变换。

通过刚才的方式可以看出,如果将矩阵的行向量解释为基向量,可以让通过乘法对向量完成一次坐标变换,变换到新的基向量描述的坐标空间下。下面通过另外一个侧面再次理解矩阵行是基向量,矩阵是基向量的组合,矩阵可以代表一种变换。

对于一个任意的3×3的矩阵,用一组基向量[1,0,0], [0,1,0], [0,0,1]乘以该任意矩阵。我们发现结果非常有意思,用[1,0,0]刚好取出了矩阵的第一行,也就是单位向量映射到新的坐标空间后,其在新的向量基[m11,m12,m13]上的比例大小。后面两行也有同样的结果。这从侧面验证了“矩阵的每一行都能解释为转换后的基向量”。

矩阵点积和叉积Python 矩阵点积 几何意义_世界坐标系_03

三、矩阵与变换

在这种解释的基础上,那我们可以有下面两条非常重要的推论。

  • 矩阵所代表的变换可以被形象化的解释
  • 由已知变换去反向建立矩阵的可能

其中,第一点(矩阵所代表的变换可以被形象化的解释)已经有非常经典的例子,每每说到这个点必提的一个例子。下面重温这个例子。

矩阵点积和叉积Python 矩阵点积 几何意义_缩放_04


按照前面部分矩阵的每一行都能解释为转换后的基向量的思想,这个矩阵中有基向量p=[2,1]和基向量q=[-1,2]。假设变换之前的坐标系就是世界坐标系,世界坐标系的基向量分别是x轴和y轴,如下图左侧中横向与竖向垂直的灰色方格所示,每一格代表一个单位长度。而新的基向量p和q构成了一个与原坐标系并不重合的新的坐标系,如下图所示,长度较长的两个深黑色基向量是矩阵对应的新基向量。需要注意的是,新的基向量的单位长度也与原世界坐标系中的单位长度不一样了,原来世界坐标系的基向量的单位长度就是灰色方格的边长,现在新基向量的长度是图中深黑色箭头的长度,是以前基向量长度的根号5倍。

矩阵点积和叉积Python 矩阵点积 几何意义_世界坐标系_05


对比上图中的两组向量基,从原参考系中的向量基(x轴和y轴)变成了后面的向量p和向量q,其实可以从图中看出该矩阵代表的变化就是绕原点逆时针旋转26°,并且出现一定比例的缩放。缩放的效果我们需要借助一个图案来看。从图中我们看到一个梯形的图案原本的大小和位置,经过矩阵作用之后,图案进行了放大和旋转。

矩阵点积和叉积Python 矩阵点积 几何意义_世界坐标系_06


当然,你肯定很好奇,为什么与这个基向量组成的矩阵相乘,整个图案都放大和旋转了呢?《3d数学基础》提出了偏转盒的概念,在二维平面当中,偏转盒是由基向量作为相邻两边组成的平行四边形。原来的基向量与新的基向量对比,进行了旋转和放大,对应的偏转盒也进行一样的旋转和放缩即可。如上图图案所示,其实图案就是在一个偏转盒中,盒子进行了需旋转和放大,带动其中的图片一起进行了旋转和放大。从2D的平面偏转盒衍生到立体空间,偏转盒也变成了三维立体偏转盒,或者是由三个相互垂直的向量基组成的三脚架。仔细观察我们还可以发现,三脚架组成的偏移盒在长宽高三个维度上发生的缩放尺度是不一样的。高度上发生的放大是最大的,而z轴宽度上没有变化。这是因为对应红线框中的转换矩阵决定的。高度y轴对应的基向量是[1.250,1.250,0],其对应的向量的模式最大的,发生的放大也就是最大的,而x轴方向的向量基模<1尺度变小;z轴基向量模等于1,对应的大小尺度不变。

矩阵点积和叉积Python 矩阵点积 几何意义_世界坐标系_07

#四、写在最后:旋转矩阵旋转是线性变换中是最常见的一种变换方式,在旋转过程中,不发生形变,不发生尺度放缩,也没有反射和镜像。在二维当中的旋转相对比较简单,通过偏转盒就可以直观观察。在三维空间当中通过三脚架确实也可以直观观察,但是涉及到绕三个轴进行旋转,情况就变得非常复杂。此处仅讨论在三维空间中最简单的一种旋转,绕坐标轴进行旋转。绕任意轴和任意点进行旋转的问题之后再做讨论。