2011-09-18 21 views
3

對於兩個圓直線移動,它很容易計算出發生碰撞的時間:http://twobitcoder.blogspot.com/2010/04/circle-collision-detection.html測距點(動圈+時間)

這假定界有固定的出發點和固定移動路徑,並計算碰撞時間。

是否有可能做到這一點周圍的其他方法:

圈1:起點X1,Y1速度VX1,VY1(固定起點,固定的線性運動路徑),半徑R1 圈2:起點X2,Y2速度標量(1米/秒等)(固定起點,固定速度,未知方向),半徑R2

是否可以在最短行程時間內確定兩個圓的碰撞位置?

I.E. 圓圈1從0,0開始並以1.0的速度移動(每次向右移動1個單位) 圓圈2從5.5開始並且每次移動1個單位 碰撞位置是什麼(或VX2 ,VY2圓圈2需要移入)以便兩個圓在最低時間T碰撞。 兩個圓的半徑爲1

在此示例中,解決方案將位於圓1周圍的某處在時間3,0。這個問題相當複雜,因爲你有未知的變量:碰撞點,碰撞時間,VX2,VY2。儘管VX2和VY2受到| VX1 | + | VX2 |的限制= 1

的原因的問題就是要告訴圈2,它應該以移動到爲「捕獲」圓圈1

蠻力解決方案將是,以檢查圓1的位置在每時間間隔,並計算是否圈2會說,如果移動到該點與圈1碰撞 - 但你可能會錯過圓的碰撞點被快速移動,或得到一個次優點等

回答

3

有解決這個簡單的兩個鍵:

  • 首先,點reac從x2及時t形成一個以x2爲中心的圓圈。
  • 其次,圈子可以觸摸他們的第一時刻必須觸及切線。

這些結合起來,告訴我們,點x2(0)x2(T),接觸點和x1(T)都是共線的。

如果我們繪製出這個圖,我們得到t中的一個二次方程:

|| x2(0) - x1(0) - v1 t ||^2 = (r1+r2+t)^2 

可以很容易得到解決代替t。

要獲得v2的方向,我們只需要使用方向爲x1(T)-x2(0)的單位矢量。

+0

邁克爾,請你說明哪些變量是二次方程的'a','b'和'c'?我假設'x'是我們正在努力解決的問題。謝謝! –

+1

我已經在PDF格式https://sites.google.com/site/therobotsbrain/files/circle_intersection_time中提供了更清晰的說明。pdf希望這會讓事情更清楚(在堆棧溢出寫數學不容易..) –

+0

謝謝。非常感激 –