游戏中的物理(车辆)(三)
空气阻力
运动的汽车会受到空气阻力。空阻与速度方向相反,减慢汽车的运动。如式8.3所示,空阻与空气密度,车速的平方,迎风面积,以及空阻系数相关。为了计算式8.3,我们需要知道空阻系数和迎风面积。
汽车的空阻系数
空阻系数与车辆的形状有关。跑车的空阻系数比卡车要低。一些典型车辆的空阻系数如表8-3所示。尽管因为雷诺数和其他因素,汽车的空阻系数会发生变化,但对游戏而言,你可以假设空阻系数是一个常量。2004 Porsche Boxster S 的空阻系数是0.31.
迎风面积
式8.3中有迎风面积。最简单的描述迎风面积的方式是汽车的宽和高的乘积。这里假设汽车的前视横截面是矩形,实际上很多汽车的侧面是倾斜的,所以迎风面积要小于宽与高的乘积。更准确的方法是宽和高的乘积再乘以一个0到1之间的系数,对Boxster S而言,这个系数是0.85.
Boxster S的宽是1.78m,高1.28m,用式8.16,迎风面积为1.94平方米。
滚动摩擦力
滚动摩擦力是由物体和滚动的面之间的变形而引起的力。由式8.4可知,滚动摩擦力可由垂直于车辆向下的力FN乘以滚动摩擦系数µr得到。如果车辆在平地上行驶,向下的力为mg。
滚动摩擦系数远比静摩擦系数小。汽车轮胎的滚动摩擦系数一般在0.01到0.02之间。
计算加速度和速度
为了模拟汽车的运动,需要知道在任意时刻的汽车的加速度和速度。我们从式8.11开始。前面已经知道了滚动摩擦系数和空阻系数,如果坡度,迎风面积,空气密度已知,唯一未知的量是轮上扭力Tw。
由式8.10,轮上扭力是引擎扭力Te,当前齿比 gk,终传比G的乘积。引擎扭力Te可由引擎扭力曲线得到。对游戏而言,扭力曲线需要用数学的方式表示。最简化的方式是用一些线段表示扭力曲线。
比如,图8.2的Boxster S的扭力曲线可以用三条线段表示。第一条是转速从1000rpm到4600rpm,扭力从220Nm到309.2Nm,第二条是转速从4600rpm到红线7200rpm,扭力则掉到227Nm,当引擎转速低于1000rpm,扭力假定为220Nm。简化的扭力曲线如图8-7所示。
使用简化的曲线,Boxster S的扭力可由三个公式表达。扭力单位为Nm。
所有8.17的式子都是如下直线公式的特殊形式:
式8.18的b是直线的斜率。当然,直线不是扭力曲线的唯一数学模型,根据曲线形状的不同,抛物线或指数函数也可用来表示扭力曲线。
为了计算加速度,我们需要将轮上扭力表达为当前车速的函数。这个函数成立的假设是轮胎不会打滑。这时,车速v可以表达为轮胎半径rw和轮胎角速度ωw的乘积。在式8.12中,角速度与引擎转速,齿比,终传比有关:
这里的60是将每分钟的转速转换为秒。将式8.18和8.19代入8.11,可得加速度与当前速度的关系:
式8.20看起来复杂,可以表达为一些常量与当前速度的乘积:
其中常量c1,c2,c3分别为:
由式8.20,可以得知是何种因素在影响车辆的加速度。明显可知,车辆越重,加速度越低。如果齿比和终传比增大,加速度也增大。降低滚动摩擦力,加速度将增加。
记住式8.20表示的是给定速度下的最大加速度,这时油门始终处于最大。现实中,始终地板油是一种极端的情况。如果油门不是最大,那么轮上扭力也不是最大。在游戏中,如果油门是最大,则扭力最大,如果油门只有一半,则扭力也是一半。
式8.20假设轮胎不会打滑,在很多情况下,最大扭力会大于轮胎和地面间的最大摩擦力,这时轮胎将会打滑,出现“烧胎”现象。稍后在“轮胎牵引力”一节将会讨论。
另一个需要注意的是,式8.20的加速度公式只是一种理想化的情况,它假设引擎的扭力在通过变速器和差速器时没有损失。实际上因为机械部件的摩擦,会有一些损失。而直线的引擎扭力曲线也不能表示真实情况。这两种假设会互相抵消,对游戏来说,式8.20足够精确。
式8.20或8.21可以计算汽车的速度。可以证明,式8.21有解析解,但是非常复杂,如果用我们的ODE算子,将会简化它的计算。
式8.21可以计算汽车理论上的最大速度。最大速度出现在合力为0时。但是在这之前,低档位时的转速就会达到红线,这时最大车速就由红线转速决定:
在更高档位(齿比更低),最大车速由阻力决定。阻力会限制车辆加速到红线转速。回忆一下,阻力与车速的平方成正比。当车速上升时,空阻也上升,直到轮上扭力和空阻以及滚动摩擦力平衡。这时加速度为0:
最大速度可以由此式的根得出:
我们用式8.25计算Porsche Boxster S位于第六档时的最大速度。空阻系数是0.31,车重是1323kg,前轮半径0.3186m,假定滚动摩擦系数是0.015,迎风面积1.94m^2,驾驶者重70kg,空气密度1.2kg/m^3,在平地上行驶,则坡度θ为0.
最大速度会出现在引擎转速较高时,所以引擎扭力会由式8.17c得到。此时b为-0.032,d为457.2.在第六档,最大速度由阻力决定,所以用式8.25计算。
另一个解是负值,所以忽略。厂家给出的最大速度为266km/h,考虑到计算中的假设和简化,这是一个相当不错的结果。
271.5km/h是阻力限制下的最大速度,对比一下红线转速限制下的最高速度(式8.23):
所以如果没有空阻和滚动摩擦力,Boxster S可以达到299km/h。为了感受一下这些力的大小,这里比较一下当Boxster S达到271.5km/h时的空阻和滚动摩擦力的大小。空阻可以由式8.3得到:
滚动摩擦力可由式8.4得到:
可以看到当车辆达到271.5km/h时,空阻是滚动摩擦力的10倍。滚动摩擦力与速度无关。如果汽车速度是10km/h,滚动摩擦力依然是205N,而空阻只有2.8N。
制动
开车当然不能总是加速,偶尔也需要减速。这里我们将讨论两种减速的方式(并不包含直接撞到树上)。可以证明,引擎会自然减慢活塞运动的速度。这种现象叫做“发动机制动”。发动机制动的扭力(Teb),由一个叫做发动机制动系数(µeb)的常量,乘以发动机的转速(每秒):
获得一辆车的发动机制动系数比较困难。对一辆F1赛车来说,这个系数是0.74,如果把这个系数用到Boxster S上,则引擎在6000rpm时的发动机制动力是74Nm,加速度为-0.17m/s^2。如果你想在游戏中模拟发动机制动效果,但又不知道发动机系数的精确值,那么0.74会是一个比较合理的数字。
另一个减速的方式是踩下刹车。这时刹车片会夹紧刹车盘,产生摩擦力,使得汽车减速。这个力与轮子转动的方向相反。
获得一辆车的刹车力度也有点难。这个信息一般表达为将车辆从特定速度完全刹停需要的距离。比如,Boxster S 从26.8m/s完全刹停需要34米长。如果刹车距离x已知,则刹车加速度, ab,可由牛顿定律得到:
记住式8.31表示的是最小刹车距离,所以驾驶者是踩满刹车,因此-10.4这个数字应视为最大刹车加速度。
对游戏来说,如果一辆车的刹车力度未知,你可以从刹车距离上计算它。记住刹车距离表示最大刹车力度。更柔和的刹车对应更小的刹车力度。
没有评论:
发表评论