




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
点和直线点的表示:在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.29577951f#define DegToRad 0.017453293f只需把角度DegToRad即可得到相应的弧度,或弧度RadToDeg即可得到相应角度。弧度转换成角度公式:弧度 = 角度2 三角函数所有的三角函数都是直角三角形中定义的。cab 常用角度的三角函数值 (角度) (弧度)sincostan0001030/60.5= 0.866 = 0.577445/4=0.7071=0.7071160/3= 0.8660.590/210不可算1202/3= 0.866-0.5-1800-102703/2-10不可算3600010在真正进入游戏主循环之前,可以建立一个三角函数的查找表,这样在游戏中需要用到三角函数值的时候就不用重新计算,只需进行查表工作就可以,大大加快运行速度。插入代码角的正弦值在第一、第二象限是正值;角的余弦值在第一、第四象限是正值;角的正切值在第一、第三象限是正值;对于所有的反三角函数,如果传入的参数是正值,那么它们的返回值都是正,即意味着该角位于第一象限;如果传入的参数为负数,那么反正弦asin()和反正切atan()的返回角度将位于第四象限,而反余弦acos()的返回角度位于第二象限。3 正弦函数的图像对于正弦函数:A越大,振幅越高B越大,周期越小4 三角函数的性质 单位圆性质: 正切和余切性质: 正弦函数的和与差: 余弦函数的和与差: 间接关系:向量运算一、向量和标量当在游戏中使用一个量的时候,一定要区分它是标量还是向量,它们两者最大的差别就是是否具有方向。二、极坐标和笛卡儿坐标1 极坐标向量,其中|A|是向量A的模,是方向角。2 笛卡儿坐标(分量)向量,其中i和j是x和y方向上的单位向量。3 坐标转换(1) 极坐标转换成笛卡儿坐标对于向量,其中,。(2) 笛卡儿坐标转换成极坐标对于向量,其中三、向量的加法和减法1 向量相加向量A和向量B相加等于A的头连接B的尾,然后从A的尾构造向量C连接到B的头,方向为从A到B。精确相加:,其中,。2 向量相减向量相减等于加上第二个向量的负向量。四、标量和向量相乘1 标量和极坐标向量相乘对于采用极坐标形式的向量,它只包含两个部分模和方向,当用向量与之相乘时,只需把标量和模相乘即可,方向不用改变。,其中c是标量。2 标量和笛卡儿坐标向量相乘对于采用笛卡儿坐标形式的向量,那么只需将标量乘以每个分量即可。,其中c是标量。五、向量的单位化单位化就是将向量的模缩放到1的过程。对于极坐标形式的向量,单位化只需将其模改成1,而方向保持不变即可。对于笛卡儿坐标形式的向量,首先计算向量的模,然后将每个分量除以该数值即可。如下:2D向量的单位化,对于向量A=a1 a2,单位化的结果是:六、点乘两个向量的点乘结果是一个标量。向量的点乘也叫做向量的数量积,这是因为向量的点乘运算返回的是一个数值。2D向量的点乘运算:AB = a1b1+a2b2其中,向量A=a1 a2,向量B=b1 b2由上述公式可知,向量的点乘运算就是将对应的x分量相乘,然后加上对应的y分量的乘积。点乘可以获得两向量之间角度的信息。 如果AB 90; 如果AB = 0,那么= 90; 如果AB 0,那么 0 说明夹角小于90。 因此该物体可视。两向量之间的夹角:向量的点乘同时可以表示一个向量在另一个向量方向上的投影长度。七、叉乘叉乘只适用于3D向量,返回的是一个向量,因此又称为向量积。叉乘得到的结果向量分别垂直于两个原始向量,也正是这个原因,它仅适用于3D向量。3D向量间的夹角;矩阵运算一、矩阵的定义1 矩阵的维数设矩阵有n行m列,那么矩阵的维数是nm。2 相等矩阵对于两个具有相同维数的矩阵,我们把同行同列的两个元素称为对应元素。两矩阵相等的充要条件是:它们具有相同的维数,并且所有的对应元素都相同。nm维和mn维不相同。二、矩阵的加减运算矩阵的加减运算要求两个矩阵具有相同的维数,因此只需在对应元素上进行加减运算即可。三、矩阵与标量相乘矩阵与标量相乘,等于标量乘以矩阵中的每个元素。,其中c是任意常量值,A是任意大小的矩阵。四、矩阵相乘矩阵相乘要有意义,必须满足A的列数等于B的行数。如果矩阵相乘有意义,那么AB的行数等于A的行数,列数等于B的列数。记法:A每行的每个元素乘以B每列的对应元素的结果的和,结果放在A元素对应的位置。其中,。矩阵相乘不满足交换律,即ABBA五、矩阵转置对于任意大小的矩阵A的转置矩阵表示为AT。对于任意大小的矩阵,元素amn在矩阵AT中变为anm变换矩阵在游戏编程中的具体应用:仿射变换。变换是指在空间中能让物体发生运动的操作的总称,包括前后、上下、左右移动,缩小放大、旋转等。仿射是指物体在变换之后应该保持先前的形状。一、平移物体的平移运动既可以由矩阵的加法来完成,也可以利用矩阵的乘法来实现。如果对物体进行的仅是平移变换,那么采用矩阵加法效率更高。如果还要对物体进行缩放和旋转变换,那么应该用矩阵乘法来实现。当对矩阵进行加法运算时仅仅是将对应元素相加,因此参加运算的两个矩阵的结构必须相同。利用矩阵加法实现2D平移:利用矩阵加法实现3D平移:利用矩阵乘法实现2D平移: 注意乘法不满足交换律!利用矩阵乘法实现3D平移:注意乘法不满足交换律!二、缩放我们可以使用矩阵乘法对一个物体进行缩放。如果对物体的所有顶点进行了缩放,那么变换的结果便是缩放了整个物体。2D缩放变换其中,Sx为x方向上的缩放因子,Sy是y方向上的缩放因子。如果要进行均匀缩放的话,即保持物体原先的形状,那么就要保证Sx = Sy。当为缩放因子Sx、Sy赋值时,如果取值位于0和1之间,那么变换的结果将缩小物体;反之,如果大于1,那么变换将扩大物体。如果缩放因子为负值时,那么变换会使物体产生镜像效果。3D缩放变换三、旋转利用矩阵相乘可以对一个物体进行旋转变换。2D旋转变换:正的旋转角度意味着沿逆时针方向进行旋转,而负的旋转角度意味着沿顺时针方向进行旋转。3D空间中的旋转问题涉及到三个平面,分别是xy、xz、yz。其中,xy平面就是计算机屏幕所在的2D平面。因此,在3D空间的旋转就有3种情况,绕x轴、绕y轴、绕z轴。(1)绕z轴3D旋转Z轴的正方向由屏幕指向外面,因此绕z轴选择其实就是在屏幕空间旋转,和2D旋转一样。Z轴旋转经常用来模拟飞机的横向滚动。(2)绕x轴3D旋转在模拟飞行领域中,绕x轴选择可以看作是飞机的前倾和后仰。绕x轴旋转时,x坐标值是不会改变的。(3)绕y轴旋转在模拟飞行中,y轴旋转可以看做是左右偏航。四、组合变换上述3节说提到的变换可以整合到一起,这样可以使程序在执行时更加快速,当然,这会增加编程时的难度。比如要对一个三角形(中心)以中心旋转左转90,那么一共需要执行如下几步: 将三角形的中心移动到原点,即x轴左移75个单位,y轴移动93个单位。 对三角形进行旋转。 将中心点移回处。那么变换如下:对于2D或3D的变换,都可以参照上述形式进行矩阵相乘。一维空间运动一、速度和速率物体只要移动就会有速率,速率是用来表示物体运动的快慢。相应的,如果一个物体有速率,那么它就会有速度,速度是速率的向量形式。即速度是有方向的速率。匀速运动的公式:位移 = 速度 时间 (D = v * t)路程 = 速率 时间 (S = v * t)平均速度:二、加速度加速度用来衡量速率的变化快慢程度。vf表示末速度,vi表示初速度。tf表示末速度对应的时间,vi表示初速度对应的时间。如果a的方向和v一致,那么表示加速运动,如果相反,表示减速运动。三、运动方程二维和三维空间运动一、使用向量二维和三维空间与一维空间的运动最大区别在于它们还有其他方向。在一维空间里,我们使用正负号来表示位移、速度和加速度这些向量。但要在二维和三维空间中,就必须结合向量来描述运动。在二维空间中,我们利用末位置减去初位置来表示位移。2D和3D的平均速度2D和3D中的移动方程这些方程对于任意矢量a,vf,vi和r以及标量时间都适用。在计算时,记得要将极坐标表示的向量使用直角坐标系表示。二、抛物运动二维空间计算抛物线的方法是将向量分解成竖直分量和水平分量,然后计算。由于分量之间是完全独立的,所以可以分别对其进行计算。如果只看竖直方向,那么速度、位移、加速度就回到了一维空间的竖直运动。位移先运动到最高点,然后下落。速度在最高点时由正值变成0,接着下落变成负值。加速度一直都是-9.8m/s2。除非有外力施加,比如弹簧,空气阻力。如果只看水平方向,那么就是匀速直线运动,排除空气阻力等其他因素。牛顿定律一、力当我们准备用程序来模拟物体的运动时,首先要对我们所要移动的物体进行受力分析。物体所受力的总和决定了它的运动模式。1 重力物体运动的竖直分量加速度为-g或-9.8m/s2。我们可以利用重力加速度和物体的质量求出物体所受重力。重力是一个向量,方向指向地心。重力公式:w = mg 其中m是物体质量,g是重力加速度。如果在游戏编程中,在不同星球之间切换,要考虑各个星球的不同重力加速度。重力的单位是牛顿,记为N,1N = 1kgm/s2。2 支持力支持力作用在物体表面,抵消重力并保证它不向下落。支持力是正交的,总是垂直于物体表面。对于斜面上的物体,支持力减小了物体竖直方向的加速度。3 摩擦力摩擦力分为两种形式,静摩擦力和滑动摩擦力。静摩擦力可以使物体保持稳定的状态,而滑动摩擦力则可以使物体减速。如果物体所受的其他力总和小于静摩擦力,那么物体保持静止。一旦其他的力大于静摩擦力,物体开始运动,静摩擦力就变成滑动摩擦力。两种摩擦力都取决于它们的接触面。接触面越光滑,摩擦力越小。要计算摩擦力,就必须知道摩擦系数。静摩擦力:其中N为支持力。滑动摩擦力:其中N为支持力。二、牛顿定律牛顿第一定律:当物体所受合力为0时,它将保持原有的运动状态不变。牛顿第二定律:Fnet = ma。F是合力,m是物体质量,a是物体的加速度。即, 一个物体受到合力越大,速度改变得越快。 如果两个物体受到的合力相同,那么质量小的物体速度改变更快。 牛顿第三定律:对于每个力,都有一个与之方向相反、大小相同的反作用力。能量一、功和动能功等于力乘以力方向上的位移。W = Fx其中x为位移,F为位移方向上的力。功的单位是Nm,也就是焦耳J。动能是物体由于运动而具有的能量。物体移动得越快,动能越大。动能的定义是质量的一半乘以速率的平方。其中m为质量,v为速率。动能是一个标量。单位也是焦耳J。二、势能势能包括重力势能和弹性势能。重力势能是根据物体距离地面的高度来衡量的能量。GPE = mgy其中m为质量,g为重力加速度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西医科大学晋祠学院《机械工程材料综合实验》2024-2025学年第一学期期末试卷
- 河南财政金融学院《设计创新技术基础》2024-2025学年第一学期期末试卷
- 山西传媒学院《生态循环种养殖技术》2024-2025学年第一学期期末试卷
- 2025年燃气储运工初级实操模拟题与实操技巧
- 2025年招聘考试模拟题销售经理岗位能力测试题库
- 福州墨尔本理工职业学院《国有资产管理学》2024-2025学年第一学期期末试卷
- 宁夏大学新华学院《国际商务谈判实验》2024-2025学年第一学期期末试卷
- 2025年酒店管理高级人才面试预测题与策略分析
- 家具售后处理培训课件
- 2025年炼油装置操作工中级考试复习策略与技巧
- 2025年软考网络管理员真题解析及答案
- 学校物业服务应急事件处理预案
- 校园安全培训课件(教师)
- 断绝子女关系协议书
- 《慢性阻塞性肺疾病患者健康教育》课件
- 单位车辆管理委托协议书示例3篇
- 孔子的故事课件
- 直肠癌护理疑难病例讨论
- 脑出血知识讲课课件
- 教育行业合同管理风险及防范措施
- 民宿经营申请书模板
评论
0/150
提交评论