开始学习计算机图形学相关知识,简单做一个学习记录
基础知识复习:个人理解图形学类似于CV的一种逆向,依赖于线性代数和部分物理学知识
注,参考GAMES101,图形学中向量默认是列向量
向量运算:
求模:类勾股定理,即分量平方和的根
加减法:平行四边形法则/三角形法则
点乘(dot product):如图,快速求夹角 对于单位向量来说点乘结果就是夹角的余弦值
实际运算就是对应元素相乘再加起来
也可以用于计算某一个向量在另一个向量方向上的投影(其中cos的值由点乘得到)
点乘还可以算出两个向量方向的接近程度以及是否大致在同一方向,如图:
(cos的值越趋近于1说明方向基本一致 接近垂直则趋近于0 再远到相反则趋近于-1)
叉乘(cross product):
a向量与b向量叉乘得到的是一个向量,得出的向量与参与的两个向量都要垂直,即和ab所在平面垂直
向量大小为图中所示,方向则由右手定则(螺旋)决定:四指指向a旋转到b的方向,他们两个叉乘得到的向量方向就是拇指指向的方向
由此可得叉乘不满足交换律,得到的向量方向相反,如图:
如图,在构造坐标系时非常有用(若x叉乘y得到z是右手系,得到-z则是左手系)
叉乘的结果是一个向量,也可写成矩阵形式,如图:
也可以按照行列式展开方便记忆,如图
叉乘在图形学中的作用:
①判定左右关系 ab同一平面,(相对于坐标轴)叉乘是正的就是b在a左面,否则右面
②判定内外关系,如图,依次分别叉乘ABAP,BCBP,CACP来判断点P是否在三角形内部,如都在同一侧则可以判断P在内部,这是光栅化的基础
矩阵:
用于变换。m行n列的数列,未引入齐次坐标时,任何一个矩阵作用的含义其实都是旋转和缩放的结合
最有用和困难的操作:矩阵乘法 如图,前的列数必须等于后的行数
对应行列的乘积加起来是新矩阵的对应位置元素:
性质:没有交换律 一般AB≠BA 但是有结合律和分配律
变换:将向量看作是只有一列的矩阵 向量和矩阵相乘是变换的基础,如
转置:
单位矩阵:是一个对角阵(只有对角线有非0元素)一般用来定义逆矩阵,都是一些线性代数基础
向量的点乘和叉乘也能写成矩阵相乘形式:
应用:相机运动的坐标变换等