❤恋するコンピュータサイエンス❤

コンピュータサイエンス、3DCGをもっと楽しく、もっと本質的に!c言語、c++の記事中心です

DDA アルゴリズム⓪【DDAとは何か】

DDAとはデジタル微分解析と訳されるらしい。
ぎょうぎょうしい名前だが、やっている事は単純で、マップにグリッドを設定した上で
プレイヤーから光線を飛ばし、1マス(1グリッドづつ進めていき)グリッドが壁か否かをその都度判定することだ。


具体的な実装はは、ループごとに必ず x 方向に 1 マス、または y 方向に 1 マス、ごとに進みます。
x 方向が負または正、y 方向が負または正になるかは、光線の方向に依存し、は stepX と stepY に保存されます。

最後に、hit は、来るループを終了してよいかどうかを決定するために用いられ、side には、壁の x 側または y 側がヒットしたかどうかが格納されます。x面がヒットした場合はsideが0になり、y面がヒットした場合はsideが1になります。x-sideとy-sideというのは、マスの境界線であるグリッドの線のことである。 

参照)

DDAのアルゴリズムのわかりやすい説明動画。
https://youtu.be/NbSee-XM7WA