2016-11-11 12 views
0

私はPythonで2つの交差円を定義する点を計算したいと思います。私が計算したい点の下のプロットを見てください。Pythonで2つの交差円を定義するすべての点を計算するには?

enter image description here

私は1つの円を定義するポイントを計算するには、次のアルゴリズムを持っている:

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 

は一つの重要な制限は、純粋なPythonの答え、私はnumpyをインポートすることができないということですOKです。 (いくつかの過度の計算と)

+0

脇に:これらの点の_all_を決して計算することはできません。無限の数があります。 – Chris

+0

あなたはただ一つの円の境界上にあり、他の円の中にない点がほしいと思うようです。 – BrenBarn

+0

クリスマス申し訳ありませんが、多分私は形状を離散化し、点を計算したいとは思っていませんでした。パラメータの1つは、それらの点の密度である 'n'です(Pythonスクリプトを参照)。 – HadiM

答えて

1

非常に単純なアプローチ:

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

は、角度の範囲内の最初の円のポイントを生成するよう

は角度開始取得sa..sa + 2*Pi

チェック - もしポイント(PX、PY )が2番目の円の外側にある場合は、結果リストに追加します(px-cx2)^2+(py-cy2)^2 > r2^2

anglで2番目の円の点を生成します電子レンジsa - Pi..sa + Pi

チェック - 点(PX、PY)は、第一円外にある場合、それはリストを(px-cx1)^2+(py-cy1)^2 > r1^2

より効果的なアプローチをもたらすために追加 - 交点角度ポイント計算のみ必要な角度範囲を走査します。

関連する問題