前言
本篇是作为图形学的基础篇,复习一下线性代数的基础知识,介绍一下向量的使用,矩阵的用法等。学好线性代数才能深入图形学的真谛。
图形学系列文章:
向量(Vectors)
特点
- 向量表示长度与方向;
- 没有绝对的起始位置;
- 单位向量(只表示方向)
向量求和
- 几何上:平行四边形法则、三角形法则;
- 代数上:直接把坐标加起来;
向量的乘法
点积(点乘)
当两个向量都是单位向量,单位都是1,所以两个向量的相乘等于夹角的余弦。
点积特性
笛卡尔坐标系
- X和Y通常表示定义成单位向量;
- 图形学上,通常默认一个向量是列向量(一列数),以便所有的向量可以左乘;
笛卡尔坐标中的点积
组件乘法,然后相加
图形中的点积
- 求两个向量之间的角度(例如光源和表面之间角度的余弦)
- 寻找一个向量投影到在另一个向量是什么样子
- 测量两个方向的接近程度
- 确定向前/向后
点积投影
向量乘法-叉积(叉乘)
- 两个初始向量叉积,计算出另外一个向量,这个向量同两个初始向量都互相垂直
- 方向由右手法则确定(正负)
- 向量的叉积可以建立三维中的直角坐标系
- 向量的叉积不满足交换律
属性:
叉积公式:
叉积作用:
- 判定左或右
- 判定内与外
数字表示: a向量 x b向量 得到的结果 z轴 是正的,所以判定b在a的左侧
右图,如何判定p点是否再三角形ABC的内部?
方法: 基于同向向量叉乘
正交坐标系
任何一组 3 个向量(3D)
矩阵
在图形中,普遍用于表示 变换 - 平移、旋转、剪切、缩放。
什么是矩阵
数字数组(m × n = m 行,n 列)
涉及到矩阵的加法,乘法。
矩阵的加法:逐个元素相加。
矩阵的乘法
满足条件: A中的列数量必须等于B中的行数
(M x N)(N x P) = (M x P)
结果:
结果中的元素来自于点乘的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)
属性:
说明: 如果要乘两个矩阵再转置,等于先对后一个矩阵做转置,再乘以前一个矩阵做转置
单位矩阵(对角矩阵)与矩阵的逆
向量乘法可以写成矩阵的形式
- 点乘
- 叉乘