2014-04-30 48 views
1

我有一個遊戲,我知道目標的位置和速度。我知道我自己的位置和我的射彈的速度。我想,以確定任何瞄準移動目標(或預測目標在彈丸擊中目標時的位置)

  • 我彈發射器和目標之間的交叉點的位置,或

  • 拍攝爲我彈相交目標

所有實體時間以恆定的速度和方向行駛,使生活更輕鬆。我一直在努力研究數學,但不能完全正確。我知道目標相交的彈丸的預測位置將是

PP = TP +電視* T

凡pp是預測位置,Tp是當前目標位置,Tv是目標速度,並t是時間。

我也知道t = | Pp - Sp |/Bs

其中Sp是我的(源)位置並且Fs是子彈(子彈)速度。但我無法想出解決這個問題的方法來獲得Pp或T。

任何人都可以啓發我嗎?由於


我發現了一個網站,詳細說明一個方法,但這似乎沒有工作(http://howlingmoonsoftware.com/wordpress/leading-a-target/)。我用來確定它是否有效的驗證方法是使用預測的位置來確定目標達到它的時間,並且讓射彈到達它。這些應該是非常相似,但在我的遊戲中,他們幾乎是2的因素。

+0

你確定地知道你的子彈會擊中目標嗎?如果目標速度是子彈的兩倍,會怎麼樣?如果目標正在向北移動,並且子彈向南移動,該怎麼辦? – Kevin

+1

這是一個解決的問題:彈道學。自二戰以來,人們一直在這樣做。這是一個迭代的物理問題,所以它不是微不足道的或封閉的形式。 – duffymo

+0

@duffymo,我同意現實世界中的彈道問題沒有封閉形式的解決方案,但我認爲如果沒有重力或空氣阻力,這裏似乎就是這樣的解決方案。 – Kevin

回答

0

我設法解決這個問題,使用餘弦規則和二次方程,同時在網上找到另一種解決方案。

基於所述餘弦規則

C^2 = A^2 + B^2 -2ab。COS(C)

我們知道角度C,因爲它是從目標

我們知道B中它是我們和目標

之間的距離,我們的相對位置的目標方向之間的角度,和

我們知道是時間*目標速度

我們知道c的時間*彈速度

這降低了下來,以獲得二次

(projspeed^2 - targetvelocity^2)* T^2 + 2 * targetvelocity * distancefromtarget * COS(C)* T - distancefromtarget^2 = 0

這可以通過使用二次替代形式來解決:

T = 2C /(-b + SQRT(b^2 -4ac))

一旦我們有了噸我們可以使用PredictionPos = TargetPos + T * TargetVelocity

爲了驗證結果是正確的,我們可以計算出目標到達目的地的時間和射彈到達目的地的時間 - 這些應該相等

0

我認爲二次方程實際上是t =( - b±sqrt(b^2 - 4ac))/ 2a。 我會添加這個作爲評論,但我缺乏所需的聲譽。