图形学01 - 妙不可言的向量与线性代数

1,338 阅读3分钟

前言

本篇是作为图形学的基础篇,复习一下线性代数的基础知识,介绍一下向量的使用,矩阵的用法等。学好线性代数才能深入图形学的真谛。

图形学系列文章:

向量(Vectors)

特点

image.png

  • 向量表示长度与方向;
  • 没有绝对的起始位置;
  • 单位向量(只表示方向)

向量求和

image.png

  • 几何上:平行四边形法则、三角形法则;
  • 代数上:直接把坐标加起来;

向量的乘法

点积(点乘)

image.png

当两个向量都是单位向量,单位都是1,所以两个向量的相乘等于夹角的余弦。

点积特性

image.png

笛卡尔坐标系

image.png

  • X和Y通常表示定义成单位向量;
  • 图形学上,通常默认一个向量是列向量(一列数),以便所有的向量可以左乘;

笛卡尔坐标中的点积

组件乘法,然后相加

image.png

图形中的点积

  • 求两个向量之间的角度(例如光源和表面之间角度的余弦)
  • 寻找一个向量投影到在另一个向量是什么样子
  • 测量两个方向的接近程度
  • 确定向前/向后

image.png

点积投影

image.png

向量乘法-叉积(叉乘)

image.png

  • 两个初始向量叉积,计算出另外一个向量,这个向量同两个初始向量都互相垂直
  • 方向由右手法则确定(正负)
  • 向量的叉积可以建立三维中的直角坐标系
  • 向量的叉积不满足交换律

属性: image.png

叉积公式:

image.png

叉积作用:

  • 判定左或右
  • 判定内与外

image.png

数字表示: a向量 x b向量 得到的结果 z轴 是正的,所以判定b在a的左侧

右图,如何判定p点是否再三角形ABC的内部?

方法: 基于同向向量叉乘

正交坐标系

任何一组 3 个向量(3D)

image.png

矩阵

在图形中,普遍用于表示 变换 - 平移、旋转、剪切、缩放。

什么是矩阵

数字数组(m × n = m 行,n 列)

image.png

涉及到矩阵的加法,乘法。

矩阵的加法:逐个元素相加。

矩阵的乘法

满足条件: A中的列数量必须等于B中的行数

(M x N)(N x P) = (M x P)

image.png

结果:

image.png

结果中的元素来自于点乘的A的i行和B的列 ,如右侧的26,位于第二行第四列,26这个结果的来源就来自左侧的第二行与第四列的点乘。

矩阵的乘积

属性:

  • 没有交换律(AB 和 BA 通常不同)
  • 结合律和分配律
    • (AB)C= A(BC)
    • A(B+C) = AB + AC
    • (A+B)C = AC + BC

矩阵和向量的乘法

• 将向量视为列矩阵 (m×1) • 转换点的关键(下一讲)

矩阵的转置

切换行和列 (ij -> ji)

image.png

属性:

image.png

说明: 如果要乘两个矩阵再转置,等于先对后一个矩阵做转置,再乘以前一个矩阵做转置

单位矩阵(对角矩阵)与矩阵的逆

image.png

向量乘法可以写成矩阵的形式

  • 点乘

image.png

  • 叉乘

image.png

image.png