2011-02-19 40 views
1

我有中心(XYZ - 在3維空間)和兩個球體A的半徑和B.查找點時兩個球體相交

現在我已經找出一種點或多於1個點這些球體相遇的地方。要弄清楚兩個球體是否碰撞是相當容易的,但是如何找出兩個球體的交點呢?

任何幫助將不勝感激。

+1

你的意思是交叉的圓圈,對嗎? – 2011-02-19 03:54:12

+0

2個球體碰撞或相交時形成的圓圈 - 是! – Krishnan 2011-02-19 03:59:19

+0

當我們有N個球時會發生什麼? – flow 2011-06-24 10:39:47

回答

2

如果較小球體的半徑爲A,並且大於B,並且它們的中心相距D單位,則交點位於半徑爲r的圓上,其中心位於直接位於兩個球體,從大球體中心y個單位,x球體從另一個球體中心x個單位,其中

y = 1/2(D +(B^2 - A^2)/ D)

X = 1/2(d - (B^2 - A^2)/ d)

半徑

R =乙^ 2 - X^2 = A^2 - Y 1 2

如果需要的方程爲這個圓的最好辦法是將其表示爲一組三個參數方程,其中x,y和z座標分別表示爲某個t的函數,它表示從0到2PI圍繞該圓一圈的半徑向量...

要構建這些方程,考慮表達點這是距離中心的半徑r,在垂直於兩個球體之間的線的2D平面上。

看看這個link關於如何做到這一點..

推導如下一些iedas:畫兩個球體的中心之間的線。將其標記爲D
指定此線上的點作爲最終解答圓的中心將其標記爲點O
將D的較小部分標記爲x,並將大部分標記爲從O表示到D,距離r表示解圓的半徑
將該半徑的末端標記爲Q 現在將較大球體的中心與較小球體的中心之間的B和Q以及Q從中心畫出並且Q

從畢達哥拉斯:
乙^ 2 = Y^2 + R^2和A^2 = X^2 + R^2
所以,之後以利minating r和一個位代數,
YX =(B^2 - A * 2)/(X + Y)
但X + Y = d,從而,

YX =(B^2 - A * 2)/ d

添加方程X + Y = d上述消除在x,給

2Y = d +(B^2 - A * 2)/ d
或,

y = 1/2 ( D + (B^2 - A*2)/D ) 
2

它們相交的曲線是一個圓。圓的半徑的公式有點複雜,但在公式中顯示爲here。 8,並且這個距離其中一個球體中心的距離如方程式所示。 5.