游戏数学

2019-06-26  本文已影响0人  fat___lin

坐标系

Unity3D 当中基本的坐标体系
unity 在
模型空间世界空间 中选用的都是左手坐标系
观察空间(摄像机空间)中使用的是右手坐标系
如果需要调用类似 Camera.cameraToWorldMatrixCamera.worldToCameraMatrix 等接口自行计算某模型在观察空间中的位置,需要小心这种坐标系的差异。

参考链接: 理解Unity3D中的四种坐标体系

向量

矢量运算 几何意义 推导公式 几何意义
点积(内积) 投影 \mid a\mid\cdot\mid b\mid cos\theta a在b上面的投影乘以b的长度
叉积(外积) 法线向量 \mid a\times b \mid = \mid a\mid \mid b\mid sin\theta a、b平行四边形面积
矢量归一化 单位矢量 \frac {a} {\mid a\mid} 获取单位矢量

矩阵

矩阵乘法 c_{ij} = \sum_{k=1}^n a_{ik}b_{kj}
对角矩阵
单位矩阵 I
转置矩阵 A^t
矩阵行列式
逆矩阵 AB = BA = I
正交矩阵 AA^t = I

变换名称 是否线性变换 是否仿射变换 是否可逆矩阵 是否正交矩阵
平移矩阵 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

M_{translation}M_{rotation}M_{scal\theta} = \begin{bmatrix}1 & 0 & 0 & t_x \\\\ 0 &1 &0 & t_y \\\\ 0 & 0 &1 & t_z \\\\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} cos\theta & 0 & sin\theta & 0 \\\\ 0 & 1 & 0 & 0 \\\\ -sin\theta &0 & cos\theta & 0 \\\\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix}k_x & 0 & 0 & 0\\\\ 0 &k_y &0 & 0 \\\\ 0 & 0 &k_z & 0 \\\\ 0 & 0 & 0 & 1 \end{bmatrix}= \begin{bmatrix} k_x cos\theta & 0 & k_zsin\theta & t_x \\\\ 0 & k_y & 0 & t_y \\\\ -k_x sin\theta &0 & k_z cos\theta & -t_z \\\\ 0 & 0 & 0 & 1 \end{bmatrix}

欧拉角&万向锁

四元数 Quaternions

用于表示旋转

四元数可视为复数的扩展。在复数中,定义了 i^2 = -1,而四元数中则定义了 i^2 = j^2 = k^2 = ijk = -1

知乎 如何形象地理解四元数

unity 官方文档
常用方法:

Quaternions方法名 备注
LookRotation 使用 forward 和 directions 创建一个旋转
Angle 返回a和b两个旋转之间的角度(以度为单位)
Euler 返回x、y、z轴的欧拉角旋转
Slerp 通过t在a和b之间进行球面插值。参数t限制在[0,1]
FromToRotation 创建一个从fromDirection转到toDirection的旋转
identity 单位旋转(只读)

MarkDown 插入数学公式实验大集合
Markdown数学符号&公式
markdown 输入数学符号

上一篇下一篇

猜你喜欢

热点阅读