游戏人工智能编程学习笔记一
1.数学知识
1.1笛卡尔坐标系
在二维空间下,笛卡尔坐标系可以被定义成两个坐标轴成直角相交并且用单位长度标出。水平轴称为x轴,垂直轴称为y轴,两个轴。
如果要表达三维空间,需要增加一个坐标轴-z轴,z轴从屏幕的后面延伸到你的头的后方,在途中穿过原点。
1.2函数和方程
如果x的每一个值都可以与y的一个值相关联,那么y就是一个关于x的函数。y称为因变量,x称为自变量。
例如:y = m * x + c
其中m和c叫做系数(不因自变量的变化而变化)
1.3三角学
1、射线和线段
射线:只有一个端点,另一端无限延伸。
线段:拥有两个端点。
2、角
弧度与角度的换算:360° = 2Π弧度
3、三角形
计算两点距离:可以使用毕达哥拉斯定理
即一个直角三角形直角所对应的斜边的平方等于其他两个边的平方和
通过直角三角形一条边的长度和其余两个角中的一个角的度数,可以使用三角函数计算该三角形的其他成分
α为角度
sin(α) = 对边/斜边
cos(α) = 邻边/斜边
tan(α) = 对边/邻边
4、矢量
在一个笛卡尔平面上的一个点可以用两个数来表达:P = (x,y)
二维矢量的形式类似 μ = (x,y) ,矢量具有方向和大小两个性质
矢量计算
加减:(x1,y1) + (x2,y2) = (x1 + x2, y1 + y2) (减直接把加号改为减号)
数乘:a*(x1,y1) = (a * x1,a * y1)
大小:可使用毕达哥拉斯定理计算,即对各个分量的平方和开根
归一化:使用矢量的模(大小)除矢量的每个分量
点乘:μ * v = μx* vx + μy * vy = 模的乘积 * cos(矢量夹角)
使用点乘可以很好的判断目标在自己的前面还是后面,自己朝向的矢量和自己到目标的矢量点乘,值为正数,则目标在前面;值为负数,则目标在后面
使用点乘还能很容易的计算矢量间的夹角,如果是归一化的两个矢量,点乘直接就是矢量夹角的余弦值
5、空间
世界空间代表的是你在屏幕上看到的渲染的东西。原点和轴的方向都是固定的
局部空间用来描述对象相对于指定实体的局部坐标系统的位置和方向,原点会跟随实体移动,方向也会随着实体的转动而改变