CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

イヤー・オブ・ザ・ドラゴン

今年のCPUいじり初めは辰年にちなみi486ボードでドラゴン曲線を描いてみました。ドラゴン曲線は自己相似性フラクタル図形の一種で次のような簡単な漸化式を再帰的に呼ぶことで描画できます

a(x、y)と点b(x,y)間に次数nのドラゴン曲線を描画するdrawDragon()関数

前回の乱数と同じようにマンデルブロ集合描画プログラムのcalc()部分を差し替え、256×256のデータバッファをピクセル座標とみなして直接描画します。そのための直線描画関数draw_line()も用意しました

ピクセル座標内に収めるため初期線分の長さは120。次数が進むたびに1/√2ずつ小さくなり次数はたかだか14くらいで1ドットの分解能に達するのでn=14でスタートさせました

drawDragon()関数の実行回数は2^15-1くらいで処理は瞬殺です。ドラゴンというかゴジラ的な画像が得られました

ボード上にビデオI/Fが載っていればリアルタイムでアニメーションできますが、このボードでは1枚1枚シリアルで転送してるのでn=0~14の画像を集めてGIF化してみました

 

単色では面白くないので重ね描きしたピクセルをインクリメントしてパレットを変えるようにプログラムを変更してみたのですが・・・

ドラゴン曲線はそもそも空間充填曲線で自己交差しない訳で濃度はどこも同じ。高分解時に整数に丸められる確率もほぼ一緒なので塗り分けはできませんでした