2015-04-12 30 views
-1

假設有3個圓A,以點a爲中心,以點b爲中心,以C爲中心,以點c爲中心。每個都具有獨立於其他的已知半徑,Ar,Br和Cr。 a和b的位置是已知的,但是c的位置不是。找到與其他兩個圓相切的圓的位置

a和b之間的距離總是在(Ar + Br)和(Ar + Br +(2 * Cr))之間。

我正在尋找一個僞代碼算法來查找c的位置,以便圓A和C相切,並且圓B和C相切。除非a和b處於最大允許距離,否則應該有兩個解決方案,在這種情況下只有一個。

謝謝,任何幫助,非常感謝。

+1

我投票結束這個問題作爲題外話,因爲它是關於幾何,而不是編程。 –

+0

我正在尋找一種可以集成到我的程序中的僞代碼解決方案。我認爲這*是關於編程的。 –

+1

首先找出數學。一旦你有了方程,轉換到代碼應該是微不足道的。 –

回答

0

在將C縮小到單個點的同時,用Rc「膨脹」圓圈A和B.然後C的中心顯示爲兩個充氣圓的交點。

寫出兩個圓的隱式方程,並從另一箇中減去一個;二次項抵消,留下直線的方程(通過兩個交點的線)。

(X-Xa)² + (Y-Ya)² = (Ra+Rc)² 
(X-Xb)² + (Y-Yb)² = (Rb+Rc)² 
    => by subtraction 
(Xa-Xb)(2X-Xa-Xb) + (Ya-Yb)(2Y-Ya-Yb) = (Ra-Rb)(Ra+Rb+2Rc) 

爲了解決這種情況,可以作爲X函數使用線性關係表達Y,則圓圈之一的替換公式中的Y和解決第二度方程中X,得到兩個解。