DDAとブレゼンハム・アルゴリズムの違いは「考え方の違い」? - WebGLでレトロPCグラフィックスを楽しむ(25)

公開:2016-05-11 06:08
更新:2017-09-22 05:40
カテゴリ:PCグラフィックス,javascript,webgl,html5,WebGLでレトロPCグラフィックスを楽しむ

DDAの整数化とブレゼンハム・アルゴリズム。違いについての比較表が下のサイトに載っている。

http://freefeast.info/difference-between/difference-between-dda-line-drawing-algorithm-and-bresenhams-line-drawing-algorithm-dda-algorithm-vs-bresanhams-algorithm/

「DDAは少数を使って遅い」「ブレゼンハムは整数のみで速い」というのが大まかな違いである。

ただ、DDAのアプローチであっても整数化は可能である。 私としては「考え方の違い」かなと思う。DDAは「傾きの加算と丸め(四捨五入)」という考え方。ブレゼンハムは「次に描画する候補点2点のうち、どの点が一番理想直線に近いか」という考え方。その違いかなと思う。

まあでも、一般的なDDAの定義とブレゼンハム・アルゴリズムの定義がそうなのであれば、それに従うけどね。

続いて円描画に取り掛かりたいと思っている。実はこの円描画についてもいろいろなアルゴリズムがあるのだ。例によって理屈はややこしいけど、コードは恐ろしく簡単なものになる。

こういうプリミティブの描画コードを書いていると、無性にミサイルコマンドを作りたくなってくる。ちなみにミサイルコマンドゲームとは下の画面。

私はこのゲームは下手くそであった。トラックボールを使ってポインタを操作するのだが、うまく操作できなかったから。このゲームのせいで今でもトラックボールは好きではない。が、よくできたゲームだと思う。

私もMZ-700でミサイルコマンドを作ってみたことがある。それを作った動機は九十九電機が発売したMZ-700用のアナログジョイスティックを買って、それを使ったゲームを作りたくなったから。ちゃんと完成させたかどうかまでは記憶にないけどね。

ただペイントもやってみたいんだよね。このペイントも、8ビットPCを持っていた当時は理解できなかったアルゴリズムの1つだからね。今は優しく解説してくれているサイトもあるから、理解はできたんだけど、実際にコードを書いてみたことはないんだよね。 ペイントの描画もYoutubeにアップされていたりする。下はX1での各BASICでのペイント速度比較。

Hu-BASIC 2.0はめちゃ速いね。。けど、画面を塗りつぶすのにこんなに時間がかかっていたんだなあ。今だと一瞬で終わりそうだけどね。