DDAの整数化とブレゼンハム・アルゴリズム。違いについての比較表が下のサイトに載っている。
「DDAは少数を使って遅い」「ブレゼンハムは整数のみで速い」というのが大まかな違いである。
ただ、DDAのアプローチであっても整数化は可能である。 私としては「考え方の違い」かなと思う。DDAは「傾きの加算と丸め(四捨五入)」という考え方。ブレゼンハムは「次に描画する候補点2点のうち、どの点が一番理想直線に近いか」という考え方。その違いかなと思う。
まあでも、一般的なDDAの定義とブレゼンハム・アルゴリズムの定義がそうなのであれば、それに従うけどね。
続いて円描画に取り掛かりたいと思っている。実はこの円描画についてもいろいろなアルゴリズムがあるのだ。例によって理屈はややこしいけど、コードは恐ろしく簡単なものになる。
こういうプリミティブの描画コードを書いていると、無性にミサイルコマンドを作りたくなってくる。ちなみにミサイルコマンドゲームとは下の画面。
私はこのゲームは下手くそであった。トラックボールを使ってポインタを操作するのだが、うまく操作できなかったから。このゲームのせいで今でもトラックボールは好きではない。が、よくできたゲームだと思う。
私もMZ-700でミサイルコマンドを作ってみたことがある。それを作った動機は九十九電機が発売したMZ-700用のアナログジョイスティックを買って、それを使ったゲームを作りたくなったから。ちゃんと完成させたかどうかまでは記憶にないけどね。
ただペイントもやってみたいんだよね。このペイントも、8ビットPCを持っていた当時は理解できなかったアルゴリズムの1つだからね。今は優しく解説してくれているサイトもあるから、理解はできたんだけど、実際にコードを書いてみたことはないんだよね。 ペイントの描画もYoutubeにアップされていたりする。下はX1での各BASICでのペイント速度比較。
Hu-BASIC 2.0はめちゃ速いね。。けど、画面を塗りつぶすのにこんなに時間がかかっていたんだなあ。今だと一瞬で終わりそうだけどね。