2011-03-28 46 views
0

我已經得到了兩個移動圓圈相互反射的代碼,但是當兩個移動圓圈中的一個是靜態的並且不移動時,運動圓圈似乎繞着靜態圓圈運動。我怎樣才能解決這個問題?如何計算從另一個靜態圓彈起的圓的速度方向?

+1

我不認爲任何人都可以切實希望回答你,除非你提供更多的信息,足以使這個問題負責。 – 2011-03-28 01:05:03

+0

你可以發佈你的代碼樣本嗎? – 2011-03-28 01:05:33

+0

@Hovercraft如果你曾經寫過2D物理引擎,它其實很簡單。 :-) – corsiKa 2011-03-28 01:06:06

回答

3

如果你有一個圓圈反彈的代碼,你可以通過找到與圓圈之間的接觸點處的靜態圓相切的線並假裝移動的圓從牆上反彈來逼近它,沿着這條線運行。

+0

這條線與兩個圓相切,不是嗎? – 2011-03-28 01:09:08

+0

看來,這將是肯定的。我必須仔細檢查數學,確定。 – corsiKa 2011-03-28 01:11:15

+0

我相當肯定,如果你知道任一圓上的影響點,你可以計算出它的正切值,並且對於任何圓都是相同的。也就是說,它們總是在它們的切線相等(或者是相反的)的點上碰撞? – Dunderklumpen 2011-03-28 01:26:11

2

文章2-Dimensional Elastic Collisions提供了一個矢量方法來解決這個問題。特別是,「碰撞速度的切向分量不會因碰撞而改變,因爲碰撞面沒有沿着切線的力,速度的法向分量經歷一維碰撞」,這節省了動量和動能。有一個Java實現here