射弹的轨迹与运动物体相遇(2D)

时间:2011-04-17 17:29:50

标签: math 2d

我已经找了很长时间才找到一个很好的数学解决方案,我的大炮在一个移动的目标上发射一个射弹,同时考虑到引力。我找到了一个解决方案,用于根据大炮的位置,目标的位置和起始速度确定大炮应该发射的角度。公式如下所述:http://en.wikipedia.org/wiki/Trajectory_of_a_projectile#Angle_.CE.B8_required_to_hit_coordinate_.28x.2Cy.29

enter image description here

这完美无缺。然而,我的目标正在移动,所以如果我向目标射击并且射弹需要几秒钟才能到达目的地,目标很快就消失了。目标的x位置可以从时间确定。让我们说: x = 1000 - (10 * t)其中t是以秒为单位的时间。 y可以描述为: y = t

问题是,t取决于大炮发射的角度。

因此我的问题是:我如何修改wiki中描述的公式,以便将移动目标考虑在内?

此外,我可能一直在这里或谷歌上看错了,但我找不到任何描述这个确切问题的解决方案。

提前感谢您的大脑时间!

作为对您评论的回复。我想现在开火,目标在速度范围内。我认为这些都是适用于这个问题的约束。

作为对答案的回复,让我们来看看这个例子:

加农炮在{0,0}并且没有移动。 起始速度为100米/秒。 目标位于{1000,0}并以10米/秒的速度向大炮移动(v = -10米/秒)。

当我想在t = 0(立刻)射击时,我应该使用什么角度来击中移动目标?

如果我在没有考虑目标速度的情况下进行射击,我将瞄准{1000,0}并且可以使用所提到的公式计算角度。但它会因为它的移动而错过目标。

正如Beta建议的那样,我可以瞄准ie {500,0},计算弹丸到达那些坐标所需的时间(比方说5秒)并等到目标距离{500, 0},是{550,0}。但这意味着我必须等待450米或45秒才能发射我的大炮。而且我不想等待,因为目标正在同时杀死我。

我真的希望这会给你足够的信息。我更喜欢一些数学解决方案,但是任何让我“非常接近”并且“正确地射击”的东西也非常受欢迎。

2 个答案:

答案 0 :(得分:3)

问题是不受约束的,这意味着你会有一些选择。你可以通过空气跟踪目标一段时间,选择何时开火取决于你。

如果你知道目标的轨迹,并且知道如何击中静止目标,那么你可以选择 你想要发生的影响。只需在轨迹上选择一个点(舒适地远远超过目标)并瞄准那里。然后,您所要做的就是决定何时开火。很容易计算炮弹到达撞击点所需的时间;很容易计算目标的位置,在达到撞击点之前的那段时间;当目标那里时,拉动扳机。

答案 1 :(得分:0)

我怀疑找到一个公式会非常困难。然而,下面的迭代方案中的误差将大致降低每个步骤的v / V(v目标速度,V为抛射速度)。

首先将飞行时间设为零

重复

计算到目标的距离(使用飞行时间)

计算距离的飞行时间。

直到连续两次飞行足够接近