2016-05-06 49 views
1

このような質問は、numpyを介して通常の「2本の線の交点を見つける方法」とは少し異なります。ここでは状況があります。私は勾配の安定性を調べるプログラムを作成しており、円が線と交差する場所を見つける必要があります。2つのnumpy配列を持つ交点の座標を求める

私は2つのnumpyの配列を有する:

一配列が他の配列は、座標(x、y)の値を算出する2D

に私に高度プロファイルの通常の(x、y)の値を与えるが、その定義された中心から円の周囲に及ぶ。

私は何とか2つを比較する必要があります。円の座標はプロファイル線と交差しますか?

circ_coords = np.array([ 
         [.71,.71], 
         [0.,1.] 
         ]) 

linear_profile = np.array([ 
          [0.,0.], 
          [1.,1.] 
         ]) 

私が吐き出すだろう機能を必要とする単一または複数のこれらの円形の座標とあなたの線形プロファイルに基づいていると言って座標値を言う。..二つが交差する:ここで作業するいくつかのデータが

ここに。

def intersect(array1, array2): 
    # stuff 
    return computed_array 
+0

circ_coordsの中心は何ですか? – PseudoAj

+0

この場合、そのちょうど(0,0):circ_coordsは既に定義された中心から値の配列を作成するために作成した関数です –

+0

numpyでのみ行いたいですか?整形式にはいくつかのクールな機能がありますので、http://toblerity.org/shapely/manual.html – PseudoAj

答えて

1

Shapelyにはいくつかの機能があります。 this postによると、このコードは動作するはずです:

from shapely.geometry import LineString 
from shapely.geometry import Point 

p = Point(0,0)//center 
c = p.buffer(0.71).boundary//radius 
l = LineString([(0.,0.), (1., 1.)])//line point 
i = c.intersection(l) 

どうやらここで私はまた、あなたが探している配列である、あまりにもこのpostを確認してください。お役に立てれば。

+0

はい、この回答は完璧で正確に私が探しているものです。ありがとう –

2

代数的に解くことができます。

x = tx1 +(1-t)x2とy = ty1 +(1-t)の間の線分上の点(x、y)のパラメトリックな表現は、 y2,

ここで、0≦t≦1である。

円の方程式に代入してtの2次方程式を解くと、0≦t01≦1、つまり線分が円で交差するかどうかをテストできます。 t01の値は交点を計算するのに使うことができます。

関連する問題