图形学依赖关系
- 基础数学
线性代数,微积分,统计学
- 基础物理
光学、力学
- 其他
信号处理,数值分析
- 美学
线性代数
向量
(点乘,叉乘,…)
矩阵
(矩阵*矩阵,矩阵*向量, …).
向量→
- 通常写成a(上面一个箭头→)或粗体a
- 起点和终点AB (上面一个箭头→)= B - A
- 方向和长度
- 无绝对起始位置
向量的大小(长度)称之为向量的模 ,||a||(a上面一个箭头→)
单位向量
- 一个大小为1的向量
- 求向量的单位向量:aˆ = a/||a|| (向量本身除以他的长度,得到和原始向量同方向,并且长度为1的向量,即他的单位向量)
- 用来表示方向(在图形学中可以用单位向量只表示方向)
向量加法
平行四边形法则和三角形法则;代数上,直接坐标相加。
笛卡尔坐标系:(认为向量永远从(0,0)开始,一段为一个单位向量,一个向量由几个X加几个Y来表示)
A写作A=(x,y)表示有多少个X,多少个Y
一个向量缺省的设置是列向量(默认为列向量) T表示转置,转置为横向量 (transpose转置)。
表示为直角坐标系下的代数形式,有助于计算向量的长度
向量乘法
向量的点乘
向量点乘得到的是一个数(标量)
点乘满足的运算法则:
交换律、结合律、分配律
笛卡尔坐标系中的点乘运算:对应的元素相乘,然后相加
图形学中的点乘
1.求两个向量之间的夹角(如光源与表面夹角余弦值).
2.求一个向量在另一个向量上的投影
投影的点乘:b向量投影到a向量上,那么b向量的方向一定是沿着a向量的
b_perp(perpendicular):b向量在a向量上的投影
b_perp可以表示为a向量的单位向量a_hat乘以一个长度k
求长度k:b向量的模乘以a向量和b向量的夹角的余弦
把一个向量分解成两个向量:沿着a向量和垂直于a向量;
点乘可以:a.计算连个向量(方向)是否接近或者远离,测量两个方向的距离(1,-1) :如果向量a与向量b比较接近,点乘的值接近1;逐渐远离到垂直位置,点乘的值逐渐接近0;再远离,点乘的值逐渐接近-1.
b.决定向前/向后:向量b的终点落在上半圆(虚线上方),表示向量b与向量a处于相同方向(向前),向量c的终点落在下半圆(虚线下方),表示向量c与向量a方向相反(向后)
判定:
点乘的值>0 终点在虚线上方(方向一致) ;
点乘的值<0 终点在虚线下方(方向相反) ;
点乘的值=0 终点刚好落在虚线上(方向垂直) ;
向量的叉乘
两个向量叉乘的结果跟原本的两个向量都要垂直,即叉乘的结果垂直于原本两个向量所在的平面。
方向由右手定则确定:右手除姆指外的四指合并,姆指与其他四指垂直,四指由A向量的方向握向B向量的方向,这时姆指的指向就是A,B向量向量积的方向。就是说,AB向量积的方向垂直于AB向量确定的平面
向量的叉乘可以构建一个三维空间下的坐标系:
在三维空间下,给定了两个轴:x轴和y轴,通过x轴叉乘y轴的方式可以计算出z轴。
如果一个三维坐标系,通过x轴和y轴叉乘得到+z,则可以称为右手坐标系,得到-Z,称为左手坐标系。
- 向量的叉乘并不满足交换律,交换后需要添加一个负号(-)
- 一个向量叉乘他自己得到一个长度为0的向量
- 分配律和结合律仍然适用
向量的叉乘可以表示为矩阵形式,上图把向量a,写成了对应的矩阵A
图形学中叉乘的作用:
- 判定左/右
- 判定内部/外部
左边是一个xy平面,判定b向量在a向量的左侧还是右侧?
用a向量去叉乘b向量,得到的结果是正的,说明b向量在a向量的左侧,反之在右侧
右图中,ABC三个点逆时针排布,判定点p在三角形内部还是外部?
AB向量 叉乘 AP向量,得到P点在AB的左侧;
BC向量 叉乘 BP向量,得到P点在BC的左侧;
CA向量 叉乘 CP向量,得到P点在CA的左侧;
说明这个P点在三角形内部,否则P点一定在某一条边的右侧。
若ABC三个点顺时针排布,则P点一定始终在三条边的右侧;所以,只要P点始终保持在三条边左侧,或者始终保持在三条边右侧,则点P一定在三角形内部,否则在三角形外部。
注:三角形光栅化,判断三角形覆盖了哪些像素,需要知道像素是否在三角形内部,然后进行着色,(若刚好等于0向量,则可以算在外部,也可以算在内部)。
正交基 / 坐标系
对于表示点,位置,位置很重要
通常有很多套坐标系
关键是这些坐标系之间的转换
右手坐标系:u向量、v向量、w向量(3个单位向量) 互相垂直(点乘的结果为0)
三个方向上投影的向量加起来就得到初始的向量
矩阵
在图形学中,广泛用于表示平移,旋转,剪切,缩放变换。
什么是矩阵?数组(m x n = m行,n列)
矩阵与矩阵的乘法:
(M x N) (N x P) = (M x P) 第一个矩阵的列数必须等于第二个矩阵的行数 (N必须相等)
乘积中的元素(i, j)为A的第i行和B的第j列的点乘
a.矩阵的乘积不满足任何交换律。AB和BA通常情况下都不会相等
b.满足结合律和分配律
- (AB)C=A(BC)
- A(B+C) = AB + AC
- (A+B)C = AC + BC
矩阵和向量的乘法
始终保持矩阵在左边,向量在右边,将向量始终认为是一个列向量,m x 1的矩阵,矩阵为 (?) x m就可以进行矩阵和向量的乘法。
旋转矩阵
矩阵的转置操作(行和列互换)
两个矩阵AB乘积的转置等于B矩阵的转置乘以A矩阵的转置(需要倒过来分别做转置再相乘)
单位矩阵与矩阵的逆
只有对角线上有非0的元素称之为单位矩阵(左上---右下)
矩阵的逆:如果一个矩阵和另一个矩阵相乘,不管顺序,得到的结果都是一个单位矩阵(I),那么称这两个矩阵互逆
两个矩阵AB乘积的逆,等于B矩阵的逆乘以A矩阵的逆(需要倒过来分别逆再相乘)
矩阵形式的向量乘法
其中A* 是指dual matrix(对偶矩阵)是由a向量转化成的矩阵。