2010-02-24 84 views
3

畫一個圓。現在將圓圈垂直和水平分成四個區域。走左上角的區域。如果你在它周圍畫一個盒子,你會有一個帶有圓角的盒子朝東。確定點是否位於特定幾何區域內

給定該單個左上區域框中的X和Y座標,如何判斷一個點是位於圓的左邊還是右邊?

+1

這是一個幾何問題,**不是**編程之一。 – 2010-02-24 05:50:30

+0

我想幾何是數學,數學是關於程序設計的?..那麼..我在開玩笑。 :) – Guru 2010-02-24 07:03:50

回答

5

您可以通過實現解決的問題:

  • 圓的中心是盒子
  • 圓的東南角包含點半徑r內的所有點

所以你可以解決這個問題,給定圓的中心在(a,b),並知道方盒的尺寸有r ......盒內的任何給定點(x,y)也是圓內,當且僅當:

((b-y)^2 + (a-x)^2) < r^2 

這樣的點以外駐留或恰好在圓當且僅當該條件爲假。

正如Derek E.在評論中建議的,在實施此解決方案時,最好比較平方距離以避免sqrt函數的近似值。

+1

當需要比較距離時,通常比較距離平方是一個好主意。 – 2010-02-24 05:45:15

+0

@Derek爲了避免近似問題?我會相應地編輯我的答案 – 2010-02-24 05:49:21

+1

平方根是一項昂貴的操作。 – 2010-02-24 06:00:08

2

找到距離圓心的距離(盒子的右下角)。如果距離大於圓的半徑(與框的邊緣大小相等),則該點在圓外。

0

畢達哥拉斯定理。將dx和dy作爲點與框右下角的點位置之間的差值。取這些值的平方和的平方根。如果該值小於框的高度(或寬度),則該點位於圓內。

4

「畫框」後我感到困惑。

我想象你的崗位作爲

; ______________ 
; |  _ - | 
; | .   | 
; | *   | [Ascii art win] 
; | .   | 
; |    | 
; |:    | 
; |______________| 
; 

你所說的圓角向東意思?我會忽略這條線,並嘗試繼續...

如果你在圓圈內有一個點,並且希望看到你是否在x/y範圍內,那麼可以簡單地使用勾股定理和測試你的三角形的斜邊是否小於或等於圓的半徑

Assume r = radius of your circle. 
mouse positions are relative to center of circle 
if(Math.Sqrt(mx^2+my^2) <= r); //in circle 
else; //outside circle 
+0

我也被'圓角標題東'部分。 – whybird 2010-02-24 05:51:34

+0

也許「圓角向東」是從(-1,0)向北行駛,然後向右行駛向東行駛,最後在(0,1)處結束的圓弧。 – 2010-02-24 06:01:40

+0

Bingo,Alok! :) – JamesBrownIsDead 2010-02-24 07:03:11

0

好吧,如果你知道點是在框中,它的簡單。如果點位於圓圈內,則位於「右側」,如果位於圓圈外側,則位於「左側」。至少在左上框的情況下。

這應該是相當明顯的,但如果你很難看到它,繪製形狀,放置一個點,然後畫一條線從圓心到點,如果它通過圓 - 彎曲的角 - 然後它在圈子的外面。

那麼你的問題就變成了「如何判斷一個點是否在一個圓圈內」。

我不認爲真的有任何其他的方式去解決它:

檢查,如果該點是在框中,然後檢查其在圓(或反之亦然...)

是圓點足夠簡單,並已被回答多次以上。

相關問題