2012-05-14 38 views
1

我在地圖上有兩個點,周圍有一個區域(比如說5英里),我需要弄清楚它們是否相交。例如,假設每個點周圍都有一個半徑爲5英里的圓。我需要弄清楚這兩個圓圈是否重疊。任何人都可以指出我可以做到這一點的數學嗎?在地圖上計算如果2個圓圈Intersect

另外,我使用Solr進行其他地理空間搜索。有誰知道這是否可以用Solr完成?

謝謝!

+5

如果它在兩點之間,爲什麼不檢查這兩點之間的距離? (<10英里) –

+0

那麼計算兩點之間的距離,然後減去它們周圍的半徑就簡單了?如果它> = 0,那麼它們相交? – threejeez

+1

我不明白......當兩個中心之間的距離小於半徑的總和時,兩個圓圈重疊,但我不認爲這就是你想要的......是嗎? –

回答

7

只需在圓心之間的距離。如果它小於r1 + r2,那麼它們重疊。

int distance = calculateDistance(); 
int r1 = circle1.getRadius(); 
int r2 circle2.getRadius(); 

boolean overlap = distance < r1+r2;