2012-03-18 57 views
1

我不善於數學,我可以找到一切到目前爲止,但不是這一個。 而我只是無法弄清楚。我想我只是沒有看到它。 我在計算方向,兩個圓圈相撞,一個有進入方向, ,需要輸出方向。使用已知直線,交點和角度計算直線

到目前爲止,我知道如何獲得碰撞點,我可以計算出入/出角度α。 (Calculating the angle between two lines without having to calculate the slope? (Java)

我堅持構造出線和檢索m或a(y = ax + b)。

enter image description here

所以,從圖片,我知道Y,I,α和所有線相交的點(沒有標記,抱歉)。

任何人都可以幫我嗎?我用Java編程。

+0

這是一個純粹的數學問題,所以可能是堆棧溢出的主題。但是我強烈建議你花一些時間回顧幾何/代數,因爲如果沒有它編程這樣的事情(一個遊戲?)將不會有效。 – 2012-03-18 20:55:20

+0

我相信這個問題會更適合http://math.stackexchange.com – jwodder 2012-03-18 20:56:23

+0

兩個圓圈相撞?第二個圓圈在哪裏?對我而言,這更像是一個基本的物理(力學)問題。圓圈(球)是否可變形?這在問題中引入了另一個維度。 – Rook 2012-03-18 20:58:29

回答

1

如果在與水平邊界碰撞期間動量守恆,碰撞只會翻轉m的符號。那就是之後的m值是-1之前的m值。

假設原線的方程爲y = mx + c,並且碰撞後線的方程爲y = -mx + b。在交點處,x和y值是相同的。

爲了避免混淆以後,我們將調用的x和碰撞點的y值(X,Y)否(X,Y)

在交叉點爲兩條線的線式成立(爲x = X,y = Y)。所以,

Y = mX+c = -mX+b. 
=> mX+c+mX = b (adding mX to both sides) 
=> 2mX+c = b (collecting the terms in m) 

所以第二線的截距(你稱爲「米或」在你的問題)是2MX + c,其中,X是所述碰撞發生時的x位置。因此,第二行的公式爲:

y = -mx + (2mX + c) 
+0

這是假設反射面是水平的。 – 2012-03-18 21:19:11

+0

@OliCharlesworth是的,謝謝你的澄清;我更新了我的答案。由於上面的圖表,我認爲屏障是水平的。 – 2012-03-19 00:20:07

相關問題