Javascript 编程弹道学。想知道这个问题吗

Javascript 编程弹道学。想知道这个问题吗,javascript,physics,Javascript,Physics,大家好,我正在学习HTML5和JS,制作一些游戏和其他东西。我正在阅读《HTML5基本指南》一书,书中描述了一种弹道式的程序,在位移y中: verticalVel2 = verticalVel1 + gravity; dy = (verticalVal2 + verticalVel1) * .5; 我不明白他们为什么取平均速度。 为什么不将“速度”设置为“速度减去重力”,然后将其应用于当前位置?可能是为了模拟空气厚度引起的减速 这个例子更适合Nick,他想知道为什么方程式中没有t var x

大家好,我正在学习HTML5和JS,制作一些游戏和其他东西。我正在阅读《HTML5基本指南》一书,书中描述了一种弹道式的程序,在位移y中:

verticalVel2 = verticalVel1 + gravity;
dy = (verticalVal2 + verticalVel1) * .5;
我不明白他们为什么取平均速度。
为什么不将“速度”设置为“速度减去重力”,然后将其应用于当前位置?

可能是为了模拟空气厚度引起的减速

这个例子更适合Nick,他想知道为什么方程式中没有t

var x = 0, y = 0, dx = 5, dy = 5
for (var t = 0; t < 150; t++) {
    x += dx, y += dy
    if (y < 0) break
    dx -= 0.1
    dy -= 0.5
    setPixel(x, y)
}
变量x=0,y=0,dx=5,dy=5 对于(var t=0;t<150;t++){ x+=dx,y+=dy 如果(y<0)中断 dx-=0.1 dy-=0.5 设置像素(x,y) } 或者这是一个基于计时器的变体

var x = 0, y = 0, dx = 5, dy = 5
var T = setInterval(function() {
    x += dx, y += dy
    if (y < 0) clearInterval(T)
    dx -= 0.1
    dy -= 0.5
    setPixel(x, y)
}, 500) 
变量x=0,y=0,dx=5,dy=5 var T=setInterval(函数(){ x+=dx,y+=dy 如果(y<0)清除间隔(T) dx-=0.1 dy-=0.5 设置像素(x,y) }, 500)
子弹或类似物体的y位移是
y=Vi*t+1/2*a*t^2
。通常,将向上运动定义为正运动,将向下运动定义为负运动
a
是一种加速度,在标准自由落体情况下,例如水平射击物体时,您希望使用重力作为加速度,g值为
9.8 m/s^2
32 ft/s^2
。记住,重力通常是负加速度,这取决于坐标系


所有这些都是假设一个恒定的力作用在物体上,因此加速度是恒定的。至于为什么他们选择平均这两件事我真的不能说。我很困惑,速度是如何在不考虑时间的情况下给出位移的。此外,您是指verticalVel1还是verticalVal1。如果你说的是verticalVal,那我不知道那会告诉我们什么。如果你指的是垂直速度的垂直角,那就偏离前面给出的方程。如果你还有任何与物理相关的问题,我可以试着为你详细阐述或回答

如果将第二个表达式中的
verticalVel2
替换为表达式,则会得到:

dy = verticalVel1 + gravity * .5;

如果代码后面的某个地方存在
y+=dy,则这是有意义的
和具有单位时间步长(即delta_t=1)的(或类似的)用于求解运动方程。

方程中没有时间,因为这是一个循环计算,时间被假定为t=1。如果每次t=1,那么有什么变化?Nick,增量。你做的每一步x+=dx,其中dx是当前速度,并计算了其他一些。尼克检查我上面的答案,我添加了一个非常简单的例子来说明如何消除t。