寒い日が続きますが風邪などひいていませんか。毎日見ている木々は、まだ芽吹きませんが春に備えて枝芽や花芽を伸ばしています。そんな木を見ていたら樹木曲線を作りたくなりました。
2013-03-01 00:01:28樹木曲線はフラクタル図形の一種です。一本の線を幹に見立て、線の中の一点から左右に枝を伸ばします。それぞれの枝を新しい幹として、そこからさらに枝を伸ばす、その枝からまた枝を伸ばす…という計算と描画の繰り返しで、意外にリアルな樹木の絵が描けます。
2013-03-01 00:04:49というわけで、リストを載せます。ちょっと長いですがコピペも多いので一気に打ち込んじゃってください。まずは変数の初期化。 http://t.co/8NQB8xSWI1
2013-03-01 00:06:33樹木曲線サブルーチンの呼び出し。呼び出しレベル 3,4,5 の3本の樹木曲線を一度に描きます。 http://t.co/eu78ddYxNu
2013-03-01 00:07:44なお今回のプログラムは、石立喬氏によるCodeZineの記事 http://t.co/Evj57N4muI を参考にしています。
2013-03-01 00:09:57樹木曲線サブルーチン、再帰部分。プチコンで◎TREEから◎TREEを呼ぶと、変数を上書きしてバグります。そこで、今回は配列変数STをスタックとして使い、上書きしては困る変数の値をセーブします。 http://t.co/jLRkAmLtia
2013-03-01 00:13:52再帰の続き。スタックに保存した数値を呼び戻し、さらに◎TREEを呼びます。まあ、意味わからなくても気にしないで。 http://t.co/OcqS4wKyb2
2013-03-01 00:15:05Nが0のとき、枝を描いて戻ります。戻ってから、さっきの一連の◎POPの呼び出しが起こります。再帰プログラムはちょっとややこしい。 http://t.co/rqJD2Ny5zh
2013-03-01 00:17:07◎PUSHは、変数Pを配列STの最後に置き、◎POPは配列STの最後の数値を変数Pに戻します。変数をPUSHした順番と逆にPOPしなくちゃいけない。
2013-03-01 00:19:22この樹木曲線プログラムを実行すると、こんな画像が出ます。Nの値を変えたり、SRやBRの値を変えると、いろいろな木が描けます。 http://t.co/UMZDcJeImS
2013-03-01 00:21:28N=2〜4くらいだと枝ばかりだけど、Nをふやすとだんだん葉が繁ってきます。Nを10にするとかなり時間がかかります。左から右へ、上から下へ描いている様子がわかります。
2013-03-01 00:25:286,7行で背景を設定。9〜14行で角度、幹や枝の割合をランダムに設定します。 http://t.co/9nskfv9AO5
2013-03-05 00:08:55値によっては貧相な木が…なぜか左右対称にならない。誤差なのかバグなのか。 http://t.co/njJA5Iv2FE
2013-03-05 00:37:09まず幹となる縦線を引き、その長さをレベルの深さに対応させます。次にその幹から斜めに線を出し、枝の割合と角度を決めようという寸法。
2013-03-09 22:14:14