计算机图形学入门 #1【游戏向】

一.线性代数


1.向量点乘:对应的元素点乘再相加,得到的结果就是数量积。
(1)作用:得到两个向量之间的夹角
      得到向量在另一个向量上的投影
(2)在笛卡尔坐标系(直角坐标系)下点乘会更加简单
(3)点乘的向量如果是单位向量,那么点乘的结果就是余弦值

2.向量叉乘:使用行列式进行计算,得到一个另外一个向量同时垂直于这两个向量
(1)向量a叉乘向量b的结果 和 向量b叉乘向量a的结果 正好相反(向量没有交换律)
(2)使用右手螺旋定则:四只手指穿过谁叉乘谁,大拇指就是得到的向量
(3)但是不是所有都是右手坐标系:比如Unity,Unreal的坐标系
(4)a x a = 0
(5)向量的作用:可以用来判断向量的左右关系
                            可以用来判断向量的内外关系
例如:一个三角形ABC内部有一点P,可以使用三边分别叉乘AP BP CP可以得出P在三角形ABC内部

3.矩阵:
(1)矩阵相乘条件:(M x N)(N x P) = (M x P)
(2)

     1 3             3 6 9 4               9  27 33 13
     5 2      X      2 7 8 3      =       19 44 61 26
     0 4                                   8  28 32 12


 需要算第几行第几列就去找第几行第几列,利用点乘去计算
(3)矩阵的转置T(乘积的转置就需要先换位再转置)
   (AB)T = BT AT
(4)点乘和叉乘都可以使用矩阵进行计算
   a  .  b  =  aT b

   a  x  b = A * b = 0    -za   ya           xb
                     za    0   -xa    *      yb
                     -ya   xa   0            zb


(5)矩阵在向量中的操作主要用于实现向量的线性变换。以下是一些常见的矩阵与向量之间的操作:
向量加权和(线性组合):
 矩阵可以表示多个向量的加权和。例如,假设我们有一个矩阵 M 和一个列向量 v,它们的乘积 Mv 就是由 M 中的每一列向量与 v 中对应元素相乘再求和所得到的结果。
缩放:
 通过用对角矩阵乘以一个向量,可以实现该向量的各个分量的缩放。例如,用一个对角线元素为 (s_x, s_y, s_z) 的对角矩阵去乘以一个三维向量 (x, y, z),就可以得到一个新的向量 (s_x * x, s_y * y, s_z * z)。
旋转:
 通过使用特定的旋转矩阵乘以一个向量,可以实现该向量在二维或三维空间中围绕某个坐标轴或任意轴的旋转。例如,在二维空间中,可以通过下面的矩阵实现逆时针旋转:

| cos(θ) -sin(θ) |     | x |
| sin(θ)  cos(θ) |  *  | y |


平移: 在齐次坐标系统中,使用一个增加了一维的矩阵(如 3x3 矩阵用于二维向量或 4x4 矩阵用于三维向量)乘以一个带有额外分量值为1的向量,可以实现向量的平移。例如,在二维空间中,可以通过下面的矩阵实现平移:

| 1 0 t_x |     | x |
| 0 1 t_y |  *  | y |
| 0 0  1  |     | 1 |


这里,t_x 和 t_y 分别表示沿着 x 轴和 y 轴的平移距离。
为了正确执行这些操作,你需要了解一些线性代数的基本概念,如矩阵乘法、转置、逆矩阵等。熟练掌握这些概念将有助于理解矩阵在向量操作中的应用。
(6)矩阵四则运算包括加法、减法、乘法和除法。我们逐一介绍这些运算:
矩阵加法:两个矩阵相加,它们必须具有相同的行数和列数。将相应的元素相加即可得到结果矩阵。
设 A 和 B 是两个 m x n 的矩阵,即:

A = | a_11 a_12 ... a_1n |
    | a_21 a_22 ... a_2n |
    |  .    .   ...   .  |
    | a_m1 a_m2 ... a_mn |
B = | b_11 b_12 ... b_1n |
    | b_21 b_22 ... b_2n |
    |  .    .   ...   .  |
    | b_m1 b_m2 ... b_mn |
矩阵加法 C = A + B 的计算方法是:
C = | a_11 + b_11  a_12 + b_12  ...  a_1n + b_1n |
    | a_21 + b_21  a_22 + b_22  ...  a_2n + b_2n |
    |