向量、矩阵的运算

678 阅读3分钟

1、向量

● 向量与标量 标量(Scalar)只是一个数字(或者说是仅有一个分量的向量)。当把一个向量加/减/乘/除一个标量,我们可以简单的把向量的每个分量分别进行该运算。

● 向量加减 向量的加减可以定义为向量的分量互相加减

image.png 小技巧:2个向量头尾相连,相加的值即折线尾与头的连线。减法则是被减值的头与减值的头的连线。

向量的长 image.png

度:image.png

● 向量乘法 普通的乘法在向量中是没有意义的,但是在相乘的时候我们有两种特定情况可以选择:一个是点乘(Dot Product),记作v¯⋅k¯,另一个是叉乘(Cross Product),记作v¯×k¯,

我们定义2个向量之间的点乘为它们长度的数乘再乘以它们之间夹角的余弦值。

点乘的意义:如果v和k都是单位向量(长度为1的向量),那么它们的点乘为cosθ,这在判断2个向量是否垂直或者平行时很有用。

所以,我们该如何计算点乘呢?点乘是通过将对应分量逐个相乘,然后再把所得积相加来计算的。

叉乘只在3D空间中有定义,在此主要讨论2D环境,就不做深入讨论了。

2、矩阵 ● 矩阵加减 矩阵与标量之间的加减即对矩阵中的每个元素与标量进行加减。 矩阵与矩阵之间的加减即矩阵中每个对应的元素加减。

● 矩阵乘法 矩阵与标量之间乘法即对矩阵中的每个元素与标量相乘。 矩阵与矩阵之间相乘: 首先,矩阵相乘只有在左边列数与右边行数相等时才能相乘。其次,矩阵乘法不遵守乘法的交换律。 矩阵的乘积即左边的每一行元素与右边的每一列函数的乘积:

image.png

结果矩阵的维度是(n, m),n等于左侧矩阵的行数,m等于右侧矩阵的列数

3、矩阵与向量相乘 一样,如果这个矩阵的列数 = 向量的行数,则可以相乘,这在很多2D、3D变换中都会用到。

4、缩放、旋转、平移 ● 缩放矩阵 向量的缩放,即对向量的每个值乘以一个缩放倍数,从上面矩阵和向量的乘法得知,缩放矩阵应该长这样:

image.png

注意,第四个缩放向量仍然是1,因为在3D空间中缩放w分量是无意义的。w分量另有其他用途,在后面我们会看到。

● 旋转

旋转首先要选定旋转轴,可以分为沿X轴旋转、沿Y轴旋转、沿Z轴旋转: 沿X轴旋转,Y、Z的值会改变 旋转之后的坐标: Y = cosθ   Z = sinθ

image.png

沿Y轴旋转,X、Z的值会改变:

image.png

沿Z轴旋转,X、Y的值会改变:

image.png

举个最简单的绕Z轴旋转的例子:

image.png

结果是 x = cosθ x - sinθ *y    y = sinθ *x + cosθ *y

● 平移

image.png