2017-09-04 8 views
-1

私はゲームマップの衝突を表現するために0と1のnumpy配列を使用しています.1として設定されている座標は壁を表します。私がする必要がどのようなPythonのnumpy配列からの視線 '

は値startXstartYendXendY与えられ、点AからB.そうに視力検査のラインですが、私は直線で私のnumpyの配列からすべての値を取得する必要があり、それらのどれかが壁(1)であれば、視線はありません。

numpyから値の行を取得する方法はありますか?それとも、これはおそらく間違った方法ですか?

任意のポインタ?あなたが必要なもの

+2

こんにちは、おそらく修正ブレゼンハムのアルゴリズムです。ここにいくつかの情報があります:http://www.roguebasin.com/index.php?title=Bresenham%27s_Line_Algorithm –

+0

視線が完全な垂直/水平/対角線でない場合はどうなりますか?部分的に目に見える指標はどのようにすべきですか?その場合にはどうやって部分的に定義しますか?各要素が正方形/円か複雑な多角形を表していますか? – MSeifert

+0

リンクをありがとう、私が必要とするものを見てください。私のゲームのすべてがグリッドベース(動き、障害物など)なので、部分的なものはありません...私は推測していますか? – user1022585

答えて

0

単純な実装

coll = np.random.randint(0, 2, (100,100)) # collision matrix 
n = 4 # bigger for more accurate, less speed 
dxy = (startX - endX + startY - endY) * n 
i = np.rint(np.linspace(startX, endX, dxy)) 
j = np.rint(np.linspace(startY, endY, dxy)) 
collision = np.any(coll[i, j])