2016-12-20 5 views
0

私は、各セルがx座標とy座標(整数)で決まるグリッドを持っています。このグリッドは100x100ワイドです。一つの点と角度を持つBresenhamのアルゴリズム

私は私の目標は、ライン((X0、Y0)で交差し、全てのセルの座標を取得できるようにすることであるセル(X0、Y0)、および角度A.

、Aを与えられています)、グリッド内。

どうすればいいですか?問題は、私が線の長さを持っていないことです...

私は2番目の点を見つけて、それからBresenhamのアルゴリズムを使用することを考えていましたが、それは計算には長すぎます。私のグリッド外。したがって、私はBresenhamのアルゴリズム(http://www.roguebasin.com/index.php?title=Bresenham%27s_Line_Algorithm#Python)を変更することを考えていましたが、私はアルゴリズムが入力上に2つのポイントを持っているという事実に基づいてそれを行う方法を手がかりにしていません! :/

ご協力いただきありがとうございます。

+1

第2の点を計算するために、 '(y1-y0)/(x1-x0)= tan(A)'という事実を利用してください。 –

+0

「すべてのセルがラインで交差しました...」は、各セルが垂直または水平の隣に結合されているより太い角度のラインを生成します。 Bresenhamのアルゴリズムは、細胞が斜めに結合できる別の細い線を生成する。なぜあなたは欲しいのですか? –

答えて

0

y軸に沿って出る前に線がx軸に沿ってグリッドを出るような角度であると仮定します。これはあなたがその行の終わりのx座​​標を知っていることを意味し、@ AxelKemperによって与えられた公式を使ってy座標を計算することができます。 (もし必要ならば、上記のx &yの役割を入れ替えてください。)どちらが先にあるかを知ることができない場合は、計算を行い、それがグリッド外にある場合は、もう一方のケースを使用してください。

関連する問題