2016-06-10 103 views
2

我目前要拿出對發現的距離一圓的點和中心的解決方案。在C#中,如何找到點與圓心的距離?

我有以下方法添加到我的Circle類,這給另一點的X和Y座標,其中,該方法返回一個點是否是圓或者沒有的範圍內。

我想完成一個圓心和半徑的圓的平局,我將不得不得出兩個人分,一個圓圈內,一個在外部。我怎麼能確定哪個點在圓內,哪個點在圓外?

我問了兩個點,一個圓的中心之間的距離。

這裏是我到目前爲止已經編寫的代碼。

public bool Contains(float px, float py) 
     { 
      (Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)) < (d * d); 
      return mContains; 
     } 
+0

可能的複製(http://stackoverflow.com/questions/481144/equation-for-testing-if-a-point-is-inside-a-circle) – Aybe

+0

不是真的,因爲我要求點與圓的中心之間的距離 – ThunderCat

回答

2

好吧,如果你有一個屬性xyradius和你給點(x1, y1),你可以很容易地測試,如果它的圓圈內:

bool IsInCircle(int x1, int y1) 
{ 
    return Math.Sqrt(Math.Pow(x1 - this.x, 2) + Math.Pow(y1 - this.y, 2)) <= this.radius; 
} 

然後,只需檢查對於你的兩點 - 一會給true,另一個false

如果你想有一個函數獲得兩個點,你可以返回一個int - 1,如果fi首先是內部,2如果第二,如果沒有則爲0,3如果兩個:

int AreInCircle(int x1, int y1, int x2, int y2) 
    { 
     bool a = Math.Sqrt(Math.Pow(x1 - this.x, 2) + Math.Pow(y1 - this.y, 2)) <= this.radius; 
     bool b = Math.Sqrt(Math.Pow(x2 - this.x, 2) + Math.Pow(y2 - this.y, 2)) <= this.radius; 
     return a && b ? 3 : (!a && !b ? 0 : (a ? 1 : 2)); 
    } 
的[等式進行測試,如果點是一個圓內]
相關問題