見出し画像

🚀DDA Digital differential analyzerで弾道作り

コンピュータグラフィックスにおいて、デジタルディファレンシャルアナライザ(DDA)は、始点と終点の間の区間にわたって変数を補間するために使用するハードウェアまたはソフトウェアです。DDAは、直線、三角形、多角形のラスタライゼーションに使用されます。DDAは非線形の関数に拡張することができ、例えば、遠近感のあるテクスチャマッピング、2次曲線、ボクセルのトラバースなどに使用されます。

https://en.wikipedia.org/wiki/Digital_differential_analyzer_(graphics_algorithm)

DDA方式は、浮動小数点演算または整数演算を使用して実装することができます。ネイティブの浮動小数点実装では、補間値(座標x、y、深度、色成分など)および出力結果ごとに1回の加算と1回の丸め演算が必要です。この処理は、高速な加算と丸め演算が可能なFPUが利用できる場合にのみ効率的です。
固定小数点整数演算では、1回の出力サイクルあたり2回の加算が必要で、小数部のオーバーフローが発生した場合には、さらに1回の加算と減算が必要となる。分数部オーバーフローの確率は、補間開始値/終了値の比mに比例する。
DDAはハードウェア実装に適しており、スループットを最大化するためにパイプライン化することができる。

DDA(Digital Differential Analyzer)は、コンピュータグラフィックスで使用される線画アルゴリズムで、指定した2つの端点間の線分を生成する。これは、2つの端点のx座標とy座標の増分差を使って線を描くシンプルで効率的なアルゴリズムです。
DDA線生成アルゴリズムに関わるステップは以下の通り:
線分の2つの端点、(x1,y1)と(x2,y2)を入力する。
端点のx座標とy座標の差をそれぞれdxとdyとして計算。
直線の傾きを m = dy/dx として計算する。
直線の初期点を(x1,y1)とする。
直線のx座標をループし、毎回1ずつ増加させ、対応するy座標を方程式y = y1 + m(x - x1)を使って計算する。
計算された(x,y)座標のピクセルをプロットする。
終点(x2,y2)に達するまでステップ5と6を繰り返す。
DDAアルゴリズムは比較的簡単に実装でき、計算効率も高いため、リアルタイムアプリケーションに適しています。しかし、縦線を扱えない、浮動小数点演算が必要でシステムによっては処理速度が遅くなるなどの制限がある。それにもかかわらず、コンピュータ・グラフィックスで線を生成するための一般的な選択肢であり続けている。


お願い致します