《游戏编程数学与物理基础》学习笔记.docVIP

  • 5
  • 0
  • 约7.09万字
  • 约 19页
  • 2016-12-22 发布于贵州
  • 举报

 《游戏编程数学与物理基础》学习笔记.doc

点和直线 点的表示:在2D平面上用一个2元组表示(x, y) 在3D位置上用一个3元组表示(x, y, z) 记得要统一x,y,z轴的起点和方向。 直线的属性:斜率 斜率slope = 性质 ①斜率相等的两条直线平行 ②斜率为负值,表示直线沿左上角到右下角延伸 ③斜率为正值,表示直线沿左下角到右上角延伸 ④斜率为0,直线为水平线,和x轴平行 ⑤分母为0,表示直线为垂直型,和y轴平行 ⑥相互垂直的直线斜率的积为-1 直线的标准表示是Ax + By = C,斜率为m=-A/B 斜截式是y = mx + b, 斜率为m 点斜式是(y – y1) = m(x – x1),斜率为m 对于同一平面上的两条直线组成的线性方程组,其解的情况如下: 如果两直线的斜率不相等,则有一组解,该解为两直线交点; 如果两直线的斜率以及在y轴上的截距相等,则有无穷组解,即两直线重叠; 如果两直线的斜率以及在y轴上的截距不相等,则无解,即两直线平行。 相关几何知识 1 两点间的距离 在人工智能程序中,智能体可以通过判断敌人与自己的距离来决定发动攻击的时机。 2D场景中的距离公式: 设点P1(x1, y1)和P2(x2, y2)分别为线上的点,他们的距离d的计算方法如下: 3D场景中的距离公式: 2 两点的中点坐标 设有点P1(x1, y1)和P2(x2, y2),两点的中点P3的坐标是: 3 抛物线 抛物线总是轴对称的。 有两个因素决定了抛物线的形状,第一是顶点,是抛物线的与对称轴的交点;第二个是对称轴。 抛物线有2种形状,一种是对称轴垂直,一种是对称轴水平。 对称轴垂直的抛物线方程: y = a(x - h)2 + k 顶点是(h, k),对称轴为x = h 对称轴水平的抛物线方程: x = a(y – k)2 + h 顶点是(h, k),对称轴为y = k 常数a代表了抛物线的开口方向和开口大小。 如果a是正数,对于y = a(x - h)2 + k的抛物线来说开口向上,对于x = a(y – k)2 + h的抛物线来说开口向右。 如果a是负数,对于y = a(x - h)2 + k的抛物线来说开口向下,对于x = a(y – k)2 + h的抛物线来说开口向左。 a的绝对值越大,开口越小。 4 圆和球 圆是所有到定点长度等于定长的点的集合,这个定长称为半径,定点称为圆心。 圆的方程:(x - h)2 + (y - k)2 = r2 圆心是(h, k),半径是r 球是一个圆绕着圆心旋转所得到的。 球体的方程:(x - h)2 + (y - k)2 + (z - l)2 = r2 圆心是(h, k, l),半径是r 使用方程时应注意圆心坐标的正负号。 5 在碰撞检测中的应用 可以在游戏中利用圆或球的边界进行碰撞检测。当然也可以利用其他图形。不过圆和球都可以方便地进行数学计算,它们在检测的速度上也优于其他图形。虽然精确度不高,但是可以作为外围检测。 两圆之间,如果两圆心的距离小于两圆的半径和,即发生碰撞。 设两圆方程分别为:(x – h1)2 + (y – k1)2 = r12和(x – h2)2 + (y – k2)2 = r22。如果: ,则两圆发生碰撞。 由于开方运算会占用大量的处理器资源,所以建议使用平方进行比较。 利用圆边界进行碰撞检测是一种较快的方法,但是极有可能会产生错误的碰撞检测结果,所以避免错误的方法是寻找一种更适合的图形来检测。只要这个图形可以用数学公式表示出来。也可以使用多重圆形进行多重检测,先检测外面的圆,如果发生碰撞则检测内部的圆,减小错误判断的几率。但多重检测会消耗更多的CPU时间。 三角函数 1 角度和弧度 每个角都由相交于一点的两条射线组成,我们把其中一条射线称为始边,另一条称为终边。而角的始边总是沿着x轴的正方向。 从x轴正方向开始,沿逆时针方向进行旋转的角称为正角,沿顺时针方向旋转的角称为负角,注意该旋转也将决定了终边的位置。 一个周角是360。,也可以表示成。这是角度和弧度之间进行转换的基础。 角度转换成弧度公式: 角度 × = 弧度 注意:① R只是个单位符号 ② 对于C++中所有的三角函数,比如sin()、cos()、tan()等它们都是以弧度值作为输入的;因此在处理角度的时候,我们可以在函数开头用#define定义一个宏,完成弧度和角度的互换。 #define RadToDeg 57 #define DegToRad 0.017453293f 只需把角度×DegToRad即可得到

文档评论(0)

1亿VIP精品文档

相关文档