2017-03-13 31 views
-2

PSA:這是一個作業問題找出這個簡單的算法

需要在兩個不同的位置在屏幕上繪製兩個圓圈。
假設一個圓圈在(100,200)處繪製,第二個圓圈繪製在(200,100)處。
如果第一個圓的半徑爲80且圓的半徑爲70,那麼兩個圓將相交。如果第一個圓的半徑爲80,第二個圓的半徑爲60,那麼這兩個圓將不相交。編寫一個算法,要求用戶輸入第一個和第二個圓的半徑並顯示正確的消息。假定兩個圓的中心位置是固定的。

+0

那麼最新的問題?只是要求代碼不會給你任何幫助,因爲它是無關緊要的。向我們展示您所寫的代碼以及您的問題。 – Paul

+0

我不知道如何編寫代碼@Paul – xelded

+4

將問題分解成更小的部分。例如。讀取用戶的座標/半徑,計算兩點中心的距離,最後將距離與半徑進行比較。 – Paul

回答

2

這是你的家庭任務,這是你應該實現它的人。這就是爲什麼讓我展示這個想法。如果{x1, y1, r1}是第一圈和{x2, y2, r2}然後

if ((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) == (r1 + r2) * (r1 + r2)) 
    // circles touch from outside 
else if ((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) == (r1 - r2) * (r1 - r2)) 
    // circles touch from inside 
else if ((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) > (r1 + r2) * (r1 + r2)) 
    // circles don't cross, they are separated 
else if ((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) < (r1 - r2) * (r1 - r2)) 
    // circles don't cross, one circle is within the other 
    if (r1 < r2) 
    // 1st circle is inside 2nd 
    else 
    // 2nd circle is inside 1st 
else 
    // circles intersect 

第二個在你的測試用例

x1 = 100 
y1 = 200 
r1 = 80 

x2 = 200 
y2 = 100 
r2 = 70 

的計算表明,

(x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) == 
(100 - 200) * (100 - 200) + (200 - 100) * (200 - 100) == 
20000 

(r1 + r2) * (r1 + r2) == 
(70 + 80) * (70 + 80) == 
22500 

(r1 - r2) * (r1 -r2) == 
10 * 10 == 
100 

我們圓相交情況下