一、数学概念
1.左右坐标系和右手坐标系
如何判断左手坐标系和右手坐标系?
答:侧面伸出右手为x方向,头部为y方面,面对的方向为z方向,则为左手坐标系,右手坐标系z轴方向为相反反向。坐标轴具有旋向性。
Unity中使用的坐标系?
答:模型空间和世界空间使用左手坐标系,观察空间使用右手坐标系。
2.正交基、标准正交基
三个矢量像坐标轴一样两两垂直称为正交基。三个矢量都为单位矢量且两两垂直则称为标准正交基。
二、矢量运算
-
矢量和标量相乘。几何意义:表示缩放。
-
矢量的加法。几何意义:矢量a+矢量b 表示a、b首尾相连,从a尾指向b首的矢量。
-
矢量的减法。几何意义:矢量a-矢量b表示 a b尾部相连从b首指向a首的矢量,即a相对于b的偏差。
-
矢量的点乘。 几何意义:矢量dot(a,b)表示a在b方向上的投影大小缩放|b|倍。或者b在a的方向上的投影缩放|a|倍。其值是个标量。
-
矢量的叉乘。 几何意义:叉乘的结果是一个矢量。矢量的大小为|a||b|sinX 其中X为矢量a、b之间的夹角。矢量的方向为垂直a和b所在的平面。叉乘常用来判断三角面片的朝向。
三、矩阵的运算
- 矩阵的乘法不满足交换律满足结合律
- 常见的特殊矩阵:方块矩阵、对角阵、单位矩阵、转置矩阵
- 逆矩阵:逆矩阵几何上被用来做变换的还原。M*M-1 = I
- 正交矩阵:M*(M)T = I . 对于正交矩阵来说:正交矩阵的转置矩阵为等于逆矩阵。转置矩阵比较好求得,因此使用正交矩阵的转置矩阵可以方便的做逆变换。
- 如何判断矩阵是正交的?条件1:行矢量都为单位向量 条件2:三个行矢量两两垂直即点乘值为0.
- Unity中使用左乘变换矩阵的方式做变换。
四、几大空间
1.模型空间
省略。
2.世界空间
省略
3.观察空间
需要注意的是观察空间使用的右手坐标系。三维空间。
4.裁剪空间
为什么要使用裁剪空间?
答:对于视椎体来说,判断一个顶点是否处于范围内,比较麻烦。于是就根据视椎体的参数做了一个简单矩阵变化,得到的裁剪空间的坐标(x,y,z,w),通过判断x,y,z与w的关系确定顶点是否在视椎体范围内。
其实质就是将x,y,z坐标做了不同程度的缩放。
5.屏幕映射
将裁剪空间的坐标想x,y,z除以w得到NDC坐标(归一化坐标)。归一化坐标在一个立方体内 其范围为(-1,1)。将-1,1映射到(0,1)再分别乘以屏幕的宽高,得到顶点在屏幕上的位置。