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