游戏开发3D数学基础(编辑中)

172 阅读1分钟
《3D数学基础:图形与游戏开发》

向量

点乘(内积)

定义

[x1y1z1][x2y2z2]=x1x1+y1y2+z1z2\begin{bmatrix} x_1 \\ y_1 \\ z_1 \\ \end{bmatrix} · \begin{bmatrix} x_2 \\ y_2 \\ z_2 \\ \end{bmatrix} = x_1x_1 + y_1y_2 + z_1z_2

几何解释

ab=abcosθ\mathbf a · \mathbf b = \begin{Vmatrix} \mathbf a \end{Vmatrix}\begin{Vmatrix} \mathbf b \end{Vmatrix} cos\theta

游戏中的应用

  • 判断目标是否在自己的身后
  • 可以计算两个向量的的夹角

叉乘(叉积)

定义

[x1y1z1]×[x2y2z2]=[ijkx1y1z1x2y2z2]=[y1z2z1y2z1x2x1z2x1y2y1x2]\begin{bmatrix} x_1 \\ y_1 \\ z_1 \\ \end{bmatrix} × \begin{bmatrix} x_2 \\ y_2 \\ z_2 \\ \end{bmatrix} = \begin{bmatrix}\mathbf i & \mathbf j & \mathbf k \\ x_1 & y_1 & z_1\\ x_2 & y_2 & z_2\\ \end{bmatrix} = \begin{bmatrix} y_1z_2 - z_1y_2 \\ z_1x_2 - x_1z_2 \\ x_1y_2 - y_1x_2 \\ \end{bmatrix}

几何解释

a×b\mathbf a × \mathbf b的结果是一个向量,并且与a\mathbf ab\mathbf b都垂直。在左手坐标系中(Unity使用的是左手坐标系),如果a\mathbf ab\mathbf b是顺时针,则在a×b\mathbf a × \mathbf b指向自己;如果a\mathbf ab\mathbf b是逆2时针,则在a×b\mathbf a × \mathbf b远离自己。

a×b=absinθ\begin{Vmatrix} \mathbf a × \mathbf b \end{Vmatrix} = \begin{Vmatrix} \mathbf a \end{Vmatrix} \begin{Vmatrix} \mathbf b \end{Vmatrix} sin\theta

游戏中的应用

  • 计算平面的法线
  • 计算平行四边形或者三角形的面积
  • 判断目标在自己的左边还是右边

矩阵

行列式

m11m12m13m21m22m23m31m32m33=m11m22m33+m12m23m31+m21m32m13m13m22m31m12m21m33m23m32m11\begin{vmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \end{vmatrix} = m_{11}m_{22}m_{33} + m_{12}m_{23}m_{31} + m_{21}m_{32}m_{13} - m_{13}m_{22}m_{31} - m_{12}m_{21}m_{33} - m_{23}m_{32}m_{11}

行列式的几何意义

行列式等于以变换后的基向量为三遍的平行六面体的有符号体积。如果变换使得平行六面体“由里向外翻转”,则行列式为负数。

正交矩阵

正交矩阵的重要性质是,矩阵的转置与矩阵的逆相等。若一个矩阵是正交的,它必须满足下列条件:

  • 矩阵的每一行都是单位向量
  • 矩阵的所有行都相互垂直

三维正交矩阵与单位四元数、欧拉角是等价的。

四元数

几何图元

几何检测