C++|第四章 学习Shader所需要的数学基础

一.坐标系与矢量
1.左手座标系与右手座标系
左手座标系使用左手法则,即旋转时顺时针旋转。 右手坐标系使用右手法则,即旋转时逆时针旋转。
Unity使用左手坐标系。这也竟未着在模型空间,一个物体的右侧,上侧,前侧分别对应x轴,y轴,z轴。 但在观察空间,Unity使用右手坐标系。观察空间,就是指以摄像机为原点的坐标系。
二.坐标系与矢量
1.基本概念 矢量相减是减数指向被减数。 如果我们要计算b相对于a的位移,可以用b减去a

2.矢量的点积 2.1 公式 a*b = ax*bx+ay*by+az*bz; 2.2 几何意义 意义1: a*b即 b在a上的投影。通过点积结果的符号,可以判断两条直线的关系。
意义2 a*b = |a||b|*cos

3.矢量的叉乘 3.1 公式 aXb = (aybz-azby,azbx-axbz,axby-aybx) 注意叉乘不满足交换率和结合率。
3.2几何意义: 1:|axb|=|a||b|sin 2:计算一个垂直于平面,三角形的矢量,也可以用于判断 三角面片的朝向。
三.矩阵 3.1 矩阵乘法 一个rxn矩阵A和一个nxc矩阵相乘,结果是一个rxc矩阵。 注意第一个矩阵的列数必须和第二个矩阵的行数相同,否则无法相乘。


3.2 矩阵乘法性质 3.2.1 不满足交换率,向量叉乘满足交换率 3.2.2 满足结合率,向量叉乘不满足结合率
3.3 方块矩阵 方块矩阵,简称方阵,指行和列数目相等的矩阵。 一个矩阵除了对角元素外的所有元素都为0,那么这个矩阵就叫 对角矩阵。
3.4 单位矩阵 对角数字都是1的对角矩阵,是 单位矩阵。 单位矩阵与任何矩阵相乘还是原来的矩阵,相当于标量中的数字1.
3.5 转置矩阵(右上角T表示 ) 将原矩阵翻转一下,即原矩阵的第i行变成 了第j列,第j行变成了第j列。
3.6 逆矩阵(右上角-1) 必须是方阵。 方阵M与逆矩阵M-1相乘,那么结果将是一个单位矩阵。 如果存在逆矩阵,我们就说这个矩阵是可逆的,或者非奇异的。
几何意义: 如果用M矩阵进行了一次变换同,再使用逆矩阵进行另外一次变换,会得到原来 的矢量。
3.7 正交矩阵 方阵M和它的矩阵乘积是单位矩阵,则说这个矩阵是 正交矩阵,即逆矩阵与转置矩阵相等。 意义: 三维变换中经常使用逆矩阵求解反向变换。逆矩阵求解计算量大,而转置矩阵却非常容易求解。
3.8 行矩阵与列矩阵 在unity中,常规做法是把矢量放在矩阵的右铡,即把矢量转换成列矩阵来进行计算。


四.矩阵几何意义:变换 1.齐次坐标 3X3矩阵不能表示平衡操作,所以将其扩展到4X4矩阵,这就是齐次坐标。
五.坐标空间 模型空间->世界空间->观察空间(摄像机空间)->裁剪空间(视锥体)->屏幕空间


    推荐阅读