2016-11-11 65 views
0

我要計算在Python中定義兩個交叉的圓點。請參閱下面我想要計算的點的圖。如何計算在Python中定義兩個交叉圓的所有點?

enter image description here

我有以下的算法來計算定義一個圓的交點:

def get_circle_points(x_center, y_center, radius, n=20): 
    xpoints = [] 
    ypoints = [] 
    for i in range(0, n+1): 
     x = math.cos(2*math.pi/n*i) * radius + x_center 
     y = math.sin(2*math.pi/n*i) * radius + y_center 
     xpoints.append(x) 
     ypoints.append(y) 
    return xpoints, ypoints 

一個重要的限制是,我無法導入numpy,只有純Python的答案都OK。

+0

順便說一句:你永遠不能計算_all_這些點。有無數的。 – Chris

+0

看起來你只是想是一個圓的邊界上,而不是其他圓圈內的點。 – BrenBarn

+0

對不起克里斯也許我並不清楚我要離散的形狀和它計算積分。其中一個參數是這些點的密度'n'(請參閱Python腳本)。 – HadiM

回答

1

非常簡單的方法(有一些過度的計算):

獲取開始角度

sa = atan2(yc2-yc1, xc2-xc1) 

產生的角度範圍內第一個圓點sa..sa + 2*Pi

檢查 - 如果點(PX,PY )是第二圈之外,將它添加到結果列表(px-cx2)^2+(py-cy2)^2 > r2^2

產生ANGL第二圓點E系列sa - Pi..sa + Pi

檢查 - 如果點(PX,PY)是第一圓之外,將其添加到結果列表(px-cx1)^2+(py-cy1)^2 > r1^2

更有效的方法 - 計算相交點的角度和掃描只需要角度範圍。