2011-01-12 4 views
1

すべての記事は、彼らがこのmathematical termのアイデアはどこから来ないBresenham Line Algorithmの決定変数はどのようにして計算されましたか?私はブレゼンハムラインアルゴリズムについて研究し

Pi = dx * (d1 - d2) 

変数の決定について話しますか?

つまり、dx * (d1 - d2)を意思決定変数としている背景には何がありますか?

なぜd1 - d2は撮影されませんでしたか?

Here is one of the articles.

+0

この記事を知らなくても、決定変数がどのように使われているのかは分かりません。これは、アルゴリズムの別の部分の名前であり、すべての実装で使用されるわけではありません。たとえば、http://en.wikipedia.org/wiki/Bresenham's_line_algorithmでは決定変数については説明していません。 – chubbsondubs

答えて

2

我々はd1-d2に気に唯一の情報は、サインですので、我々は、任意の正の値を乗算し、何かを失うことができません。私たちは実際にはd1d2の値を知っていません。すぐに知っているものから値を計算しなければなりません。ただし、この計算にはdXで除算する必要があり、除算は遅く、可能な場合は避けてください。その結果、dXは常に正であるため、私たちが探している情報を失うことなく除算操作を削除するには、d1d2の両方にdXを掛けるだけです。

1

Bresenhamのアルゴリズムは、45度の断面にカットされた円の1つの部分に焦点を当て、そのうちの1つのみを解決します。円は、点x1、y1(すなわち、渡された最初のパラメータ)から引き出される可能性のあるすべての線を考慮して形成される。しかし、形成可能なすべての線に対して解を一般化するためには、その円の他のすべてのセクションを1つのセクションに変換する必要があるだけで、ただ1つのセクションに焦点を当てているので円を描く方法を知っている。通常、x1、y1が< x2、y2であることを確認し、これが保持されていない場合は、それらを入れ替えるアルゴリズムの先頭にある初期化コードが表示されます。これにより、処理する必要がある行数の半分の円を効果的にカットします。したがって、コードの次の部分では4つの異なるスロープだけを処理する必要があります。決定変数は、アルゴリズムが属する4つのセクションのうちのどれを決定するかの最適化です。私たちは常に正のX方向に進んでいますが、問題は、Xより速く(セクション1 & 4時計回りの位置)、またはXがYより速く動いていることです(セクション2 & 3)。

決定変数は、ループの各繰り返しでifステートメントを実行する必要がなくなります。

関連する問題