网站大量收购独家精品文档,联系QQ:2885784924

游戏编程数学和物理基础学习笔记.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
点和直线 点的表示:在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即可得到相应的弧度,或弧度×RadToDeg即可得到相应角度。 弧度转换成角度公式:弧度 × = 角度

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档