2、笛卡尔坐标系
3、多坐标系
3.2 一些有用的坐标系
3.2.1 世界坐标系
世界坐标系建立了描述其他坐标系所需要的参考框架,能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系来描述世界坐标系。
世界坐标系的典型问题都是关于初始位置和环境的,如:
- 每个物体的位置和方向;
- 摄像机的位置和方向;
- 世界中没一点的地形是什么(如山丘、湖泊等);
- 个物体从哪里来,到哪里去(NPC的运动策略)。
3.2.2 物体坐标系
物体坐标系是特定物体相关联的坐标系,每个物体都有独立的坐标系,当物体移动或改变方向时,该物体相关联的坐标系也会移动或改变方向。
世界坐标系也叫模型坐标系。
- 周围有需要相互作用的物体吗?(我要攻击他吗?)
- 哪个方向?前面?左边?
3.2.3 摄像机坐标系
摄像机坐标系是和观察者密切相关的坐标系。可以被看做是一种特殊的“物体“坐标系,该”物体“坐标系定义在摄像机的屏幕可视区域。
- 3D空间中的给定点在摄像机前方吗?
- 某个物体是否在屏幕上?
- 两个物体,谁在前?
3.2.4 惯性坐标系
为了简化世界坐标系到物体坐标系的转换,引入的新的坐标系。惯性坐标系的原点和物体坐标系的原点重合,轴和世界坐标系的轴平行。
从世界坐标系到惯性坐标系只需要平移,从惯性坐标系到物体坐标系只需要旋转。
4、向量与标量
5、向量运算
5.2 符号约定
- 标量:斜体小写字母 a, b, c, d, e
- 向量:粗体小写 a, b, c, d, e
- 矩阵:粗体大写 A, B, C, D
5.10 向量点乘
5.10.1 运算法则
向量点乘记为 a·b,为对应分量乘积的和,结果为标量。
[a1,a2…an-1,an]·[b1,b2…bn-1,bn] = a1b1 + a2b2 + … + an bn
5.10.2 几何解释
a·b = |a| |b|cosθ
θ = arccos((a·b)/(|a||b|))
根据θ的大小,可以判断两向量的方向。可用于判断怪物与人物的位置关系。
5.10.3 向量投影
给定两个向量 v 和 n ,基于向量 n, 可以将v分解为平行和垂直n的两个向量 v1和 v2
v1 = n|v1|/|n|
5.11 向量叉乘
5.10.1 运算法则
[x1, y1, z1]x[x- y2, z2] = [y1z2 - z1y2, z1x2 - x1z2, x1y2 - y1x2]
叉乘的运算优先级和点乘一样,叉乘优先计算。
5.10.2 几何解释
叉乘得到的向量垂直于原来的两个向量平面
|a x b| = |a| |b| sinθ
叉乘的结果的模值等于以ab为边的平行四边形的面积
5.12 线性代数公式