线代基础
向量
基础定义
- 向量(Vetor):一个有方向和长度的值
- 单位向量:长度为1的向量,可以用来表示向量的方向 $$\hat{a} = \vec a / || \vec a ||$$
为向量a的绝对值,为向量a的长度- 齐次坐标
向量计算
向量加法
- 向量的加法:平行四边形法则与三角形法则
- 两个变量首尾相接后,即为两个向量的加法
- 使用直角坐标系显示向量
- 在图形学中一般使用列向量,方便矩阵左乘
向量的乘法
点乘
- 点乘可以快速得出两个向量的夹角
- 对于单位向量:
- 点乘运算:点乘运算满足交换律、结合律以及分配律
- 在坐标系下的点乘运算
- 2D
- 3D
- 2D
- 向量与向量之间的投影: 向量b在向量a上的投影方向一定是和a方向一致
必须与 方向相同。则有- 则
为
- 点乘可以展示两个向量之间的关系,例如:
- 可以知道两个向量有多接近:向量越接近则点乘结果越接近1,90°时点乘结果为0,完全相反时点乘结果为-1
- 可以知道两个向量是否同方向(即两个向量之间夹角是否为锐角)如果点乘结果>0则为同方向,<0则为反方向
- 用途:可以使用点乘判断镜面,高亮等
叉乘
- 叉乘可以得知与两个向量所在平面垂直的向量
- 叉乘可以简单的使用右手螺旋定则,计算a * b的向量为右手四指从a旋转到b时拇指指向的方向
- 叉乘运算
- 如果
则称其为右手坐标系 - 叉乘没有交换律,如果需要交换则需要乘以-1
- 叉乘存在交换律与结合律
- 如果
- 向量叉乘坐标计算
- 其中
为a的对偶矩阵(dual matrix of vector a)
- 通过叉乘可以得出两个向量的左右以及内外
- a * b结果为正,所以b在a左侧
- 判断点是否在三角形内部,分别判断AB、BC、CA与AP的叉乘,结果同符号则该点在三角形内部
- 用途:叉乘在光栅化时使用较多
使用向量建立坐标系
- 如果定义三个向量,它们长度为1,互相垂直,且可使用叉乘建立右手坐标系,则可以将任意向量p分解到这三个向量上
矩阵
基础定义
- 矩阵就是一些数,分成了若干行(M)与若干列(N)
矩阵运算
矩阵常数乘法
- 一个矩阵乘以一个常数的结果为矩阵中的每一个数乘以这个常数后组成的矩阵
矩阵的乘积
- 计算两个矩阵的必须要满足部分条件:
- 以示例为例,结果中的2R4C的26结果为M矩阵中的2R(5 2)乘以N矩阵中的4C(4 3)后的结果5x4+3x2
- 矩阵的乘法没有交换律,如果需要交换则需要把前一个矩阵转置;矩阵有结合律和分配律
- 矩阵的转置:将矩阵沿着左上到右下的对角线对称翻转
- 单位矩阵:行数与列数相同且对角线上为1,其余为0的矩阵
- 向量的点乘与叉乘可以用矩阵表示