数学相关知识及其应用
前言
游戏开发实际上不需要精通这些数学原理,引擎的实现中已经提供了很多数学函数。
尤其是角度相关的操作,初学者容易弄不清该使用什么工具、函数,只能上网搜索;
但搜索出来的内容大多是些数学知识介绍,这种情况容易让新手误以为需要自己写函数做计算。
如果你也正在经理这个阶段,我推荐你直接看下一节内容:操作变换
向量加法、减法
代码
var c = a + b; // (2, 5) + (3, 1) = (5, 6)
用于
- 加法-物体移动
- 减法-物体指向
单位向量
大小为 1 的向量称为单位向量,有时也被称为方向向量或法线。当你需要记录方向时就可以使用单位向量。
代码
归一化
a = a.Normalized();
用于
- 记录方向
向量点乘
代码
点乘(又名点积、数量积),满足交换律 与单位向量一起使用时,点积是最有用的,可以得到两个向量之间夹角的一些信息:
float c = a.Dot(b);
float d = b.Dot(a); // 这是相等的
使用单位向量时,结果总是会在 -1(180°)和 1(0°)之间。
用于
- 朝向检测、判断
var AP = A.DirectionTo(P);
if (AP.Dot(fA) > 0)
{
GD.Print("A sees P!");
}
- 到平面的距离 单位向量和任何空间点之间的点积(是的,这次我们在向量和位置之间进行点乘),将返回从该点到平面的距离
var distance = normal.Dot(point);
但返回的不止是距离的绝对值,如果点位于负半空间,那么这个距离也是负的,这样我们就能够知道点位于平面的哪一侧。