游戏数学

坐标系

  • 右手坐标系:3d max
  • 左手坐标系:UnityUnreal

Unity3D 当中基本的坐标体系

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

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

向量

  • 向量点乘
    a \cdot b=\sum_{i=1}^{n}a_{i}b_{i}
  • 向量叉乘
    \begin{bmatrix} x_{1} \\\ y_{1} \\\ z_{1} \end{bmatrix} \times \begin{bmatrix} x_{2} \\\ y_{2} \\\ z_{2} \end{bmatrix} = \begin{bmatrix} y_{1}z_{2} -z_{1}y_{2} \\\ z_{1}x_{2} - x_{1}z_{2} \\\ x_{1}y_{2}-y_{1}x_{2} \end{bmatrix}
  • 夹角计算
    \theta = \arccos \left( \frac{a\cdot b}{ \mid a \mid \mid b \mid } \right) = \arcsin \left( \frac{a \times b}{ \mid a \mid \mid b \mid } \right)
矢量运算 几何意义 推导公式 几何意义
点积(内积) 投影 \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
  • 基础变换:平移、旋转、缩放
    \begin{bmatrix}M_{3*3} & t_{3*1} \\\\0_{1*3} &1\end{bmatrix}
    M_{3*3} 表示旋转、缩放
    t_{3*1} 表示平移

  • 复合变换
    一般约定顺序为,先缩放,再旋转,最后平移——矩阵运算相对简单
    P_{new}=M_{translation}M_{rotation}M_{scal\theta}M_{old}

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 输入数学符号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353