プチコンのプ その10 樹木曲線で春よ来い!

サクラサク? BASICではやりにくい再帰呼び出しを使って、単純なルールで木のような図形を描ける樹木曲線のプログラムを作ります。
0
プチコンのプ。 @p4petitcom

プチコンのプ その10・樹木曲線で春よ来い!の巻

2013-02-28 23:59:09
プチコンのプ。 @p4petitcom

寒い日が続きますが風邪などひいていませんか。毎日見ている木々は、まだ芽吹きませんが春に備えて枝芽や花芽を伸ばしています。そんな木を見ていたら樹木曲線を作りたくなりました。

2013-03-01 00:01:28
プチコンのプ。 @p4petitcom

樹木曲線はフラクタル図形の一種です。一本の線を幹に見立て、線の中の一点から左右に枝を伸ばします。それぞれの枝を新しい幹として、そこからさらに枝を伸ばす、その枝からまた枝を伸ばす…という計算と描画の繰り返しで、意外にリアルな樹木の絵が描けます。

2013-03-01 00:04:49
プチコンのプ。 @p4petitcom

というわけで、リストを載せます。ちょっと長いですがコピペも多いので一気に打ち込んじゃってください。まずは変数の初期化。 http://t.co/8NQB8xSWI1

2013-03-01 00:06:33
拡大
プチコンのプ。 @p4petitcom

樹木曲線サブルーチンの呼び出し。呼び出しレベル 3,4,5 の3本の樹木曲線を一度に描きます。 http://t.co/eu78ddYxNu

2013-03-01 00:07:44
拡大
プチコンのプ。 @p4petitcom

なお今回のプログラムは、石立喬氏によるCodeZineの記事 http://t.co/Evj57N4muI を参考にしています。

2013-03-01 00:09:57
プチコンのプ。 @p4petitcom

樹木曲線サブルーチン、再帰部分。プチコンで◎TREEから◎TREEを呼ぶと、変数を上書きしてバグります。そこで、今回は配列変数STをスタックとして使い、上書きしては困る変数の値をセーブします。 http://t.co/jLRkAmLtia

2013-03-01 00:13:52
拡大
プチコンのプ。 @p4petitcom

再帰の続き。スタックに保存した数値を呼び戻し、さらに◎TREEを呼びます。まあ、意味わからなくても気にしないで。 http://t.co/OcqS4wKyb2

2013-03-01 00:15:05
拡大
プチコンのプ。 @p4petitcom

Nが0のとき、枝を描いて戻ります。戻ってから、さっきの一連の◎POPの呼び出しが起こります。再帰プログラムはちょっとややこしい。 http://t.co/rqJD2Ny5zh

2013-03-01 00:17:07
拡大
プチコンのプ。 @p4petitcom

◎PUSHは、変数Pを配列STの最後に置き、◎POPは配列STの最後の数値を変数Pに戻します。変数をPUSHした順番と逆にPOPしなくちゃいけない。

2013-03-01 00:19:22
プチコンのプ。 @p4petitcom

この樹木曲線プログラムを実行すると、こんな画像が出ます。Nの値を変えたり、SRやBRの値を変えると、いろいろな木が描けます。 http://t.co/UMZDcJeImS

2013-03-01 00:21:28
拡大
プチコンのプ。 @p4petitcom

N=2〜4くらいだと枝ばかりだけど、Nをふやすとだんだん葉が繁ってきます。Nを10にするとかなり時間がかかります。左から右へ、上から下へ描いている様子がわかります。

2013-03-01 00:25:28
プチコンのプ。 @p4petitcom

今日はここまで。次回、ちょっと改造してみます。

2013-03-01 00:26:52
プチコンのプ。 @p4petitcom

その10 樹木曲線で春よ来い! 2

2013-03-05 00:06:21
プチコンのプ。 @p4petitcom

6,7行で背景を設定。9〜14行で角度、幹や枝の割合をランダムに設定します。 http://t.co/9nskfv9AO5

2013-03-05 00:08:55
拡大
プチコンのプ。 @p4petitcom

枝の長さCLが短いとき、緑色で描きます。 http://t.co/x0q7PbaCEM

2013-03-05 00:11:53
拡大
プチコンのプ。 @p4petitcom

値によっては貧相な木が…なぜか左右対称にならない。誤差なのかバグなのか。 http://t.co/njJA5Iv2FE

2013-03-05 00:37:09
拡大
プチコンのプ。 @p4petitcom

今回はここまで。INPUT文で好きな数字を入れられるようにしてもいいですね。

2013-03-05 00:39:11
プチコンのプ。 @p4petitcom

その10 樹木曲線で春よ来い! #3

2013-03-09 22:09:18
プチコンのプ。 @p4petitcom

前回はINPUT文と言って締めましたが、ここはプチコンらしくタッチペンで角度やレベルを入力することにします(^^)

2013-03-09 22:12:37
プチコンのプ。 @p4petitcom

まず幹となる縦線を引き、その長さをレベルの深さに対応させます。次にその幹から斜めに線を出し、枝の割合と角度を決めようという寸法。

2013-03-09 22:14:14