游戏数学
2019-06-26 本文已影响0人
fat___lin
坐标系
- 右手坐标系:
3d max
- 左手坐标系:
Unity
、Unreal
unity 在
模型空间 和 世界空间 中选用的都是左手坐标系
观察空间(摄像机空间)中使用的是右手坐标系。
如果需要调用类似
Camera.cameraToWorldMatrix
、Camera.worldToCameraMatrix
等接口自行计算某模型在观察空间中的位置,需要小心这种坐标系的差异。
参考链接: 理解Unity3D中的四种坐标体系
向量
- 向量点乘
- 向量叉乘
-
夹角计算
矢量运算 | 几何意义 | 推导公式 | 几何意义 |
---|---|---|---|
点积(内积) | 投影 | a在b上面的投影乘以b的长度 | |
叉积(外积) | 法线向量 | a、b平行四边形面积 | |
矢量归一化 | 单位矢量 | 获取单位矢量 |
矩阵
矩阵乘法
对角矩阵
单位矩阵
转置矩阵
矩阵行列式
逆矩阵
正交矩阵
变换名称 | 是否线性变换 | 是否仿射变换 | 是否可逆矩阵 | 是否正交矩阵 |
---|---|---|---|---|
平移矩阵 | N | Y | Y | Y |
绕坐标轴旋转的旋转矩阵 | Y | Y | Y | Y |
绕任意轴旋转的旋转矩阵 | Y | Y | Y | Y |
按坐标轴缩放的缩放矩阵 | Y | Y | Y | N |
错切矩阵 | Y | Y | Y | N |
镜像矩阵 | Y | Y | Y | Y |
正交投影矩阵 | Y | Y | N | N |
透视矩阵 | N | N | N | N |
-
基础变换:平移、旋转、缩放
表示旋转、缩放
表示平移 -
复合变换
一般约定顺序为,先缩放,再旋转,最后平移——矩阵运算相对简单
欧拉角&万向锁
四元数 Quaternions
用于表示旋转
四元数可视为复数的扩展。在复数中,定义了 ,而四元数中则定义了
unity 官方文档
常用方法:
Quaternions方法名 | 备注 |
---|---|
LookRotation | 使用 forward 和 directions 创建一个旋转 |
Angle | 返回a和b两个旋转之间的角度(以度为单位) |
Euler | 返回x、y、z轴的欧拉角旋转 |
Slerp | 通过t在a和b之间进行球面插值。参数t限制在[0,1] |
FromToRotation | 创建一个从fromDirection转到toDirection的旋转 |
identity | 单位旋转(只读) |