我有像xy坐标(200,200)。我知道从球的起源角度计算。当球在二维环境中投掷时,如何才能找到达到特定xy坐标的初始速度?需要使用弹道中特定坐标的角度?
x = v0cosq0t;
y = v0sinq0t - (1/2)gt2.
但时间
荫。没有时间我能做到吗?请帮忙吗?
我有像xy坐标(200,200)。我知道从球的起源角度计算。当球在二维环境中投掷时,如何才能找到达到特定xy坐标的初始速度?需要使用弹道中特定坐标的角度?
x = v0cosq0t;
y = v0sinq0t - (1/2)gt2.
但时间
荫。没有时间我能做到吗?请帮忙吗?
我假设你想让球在其路径的顶点击中特定点(200,200)。好了,我的物理学是有点生疏,但是这是我扔在一起:
v_y = square_root(2*g*y)
,
其中g是反映了由于重力的加速度为正数,y为你想有多高去(在这种情况下是200)。
v_x = (x*g)/v_y
,
其中x是你想多远,在X方向走(200在这种情况下),g是和以前一样,和Vy是我们以前的公式中得到了答案。
这些公式不需要角度。但是,如果你宁愿有速度+角,这是简单的:
v0 = square_root(v_x^2 + v_y^2)
和
angle = arctan(v_y/v_x)
。
这里是推导,如果你有兴趣:
(1/2)at^2 + v_yt + 0 = y
(1/2)at^2 + v_yt - y = 0
通过二次方程式,
t = (-v_y +/- square_root(v_y^2 - 2ay))/a
我们也有另一个公式,因为在顶点的垂直速度为0:
0 = v_y + at
替代:
0 = v_y + (-v_y +/- square_root(v_y^2 - 2ay))
0 = square_root(v_y^2 - 2ay)
0 = v_y^2 - 2ay
v_y = square_root(-2ay)
,或
v_y = square_root(2gy)
对于v_x:
v_x*t = x
从之前,T = v_y/A,因此
希望作出足够的常识。
我确定你可以假设速度变化是瞬时的。游戏物理学中总是存在一些“狡猾”的部分,因为它在计算上太昂贵或者不足以让低粒度信息正确化。
您可以立即开始velocity ass,然后使用计时器类来测量每帧之间的时间(非常粗糙的做法),或者您可以在更新循环中设置一个计时器类,以便更新物理每x秒。
你可能想考虑描述每个变量是什么。我不知道“gt2”代表什么。第2行也有语法错误。“。”代替 ”;” – Ponkadoodle 2010-02-02 06:50:04