10周年のSPコンテンツ!
0
プチコンのプ。 @p4petitcom
プチコンのプ その10・樹木曲線で春よ来い!の巻
プチコンのプ。 @p4petitcom
寒い日が続きますが風邪などひいていませんか。毎日見ている木々は、まだ芽吹きませんが春に備えて枝芽や花芽を伸ばしています。そんな木を見ていたら樹木曲線を作りたくなりました。
プチコンのプ。 @p4petitcom
樹木曲線はフラクタル図形の一種です。一本の線を幹に見立て、線の中の一点から左右に枝を伸ばします。それぞれの枝を新しい幹として、そこからさらに枝を伸ばす、その枝からまた枝を伸ばす…という計算と描画の繰り返しで、意外にリアルな樹木の絵が描けます。
プチコンのプ。 @p4petitcom
というわけで、リストを載せます。ちょっと長いですがコピペも多いので一気に打ち込んじゃってください。まずは変数の初期化。 http://t.co/8NQB8xSWI1
拡大
プチコンのプ。 @p4petitcom
樹木曲線サブルーチンの呼び出し。呼び出しレベル 3,4,5 の3本の樹木曲線を一度に描きます。 http://t.co/eu78ddYxNu
拡大
プチコンのプ。 @p4petitcom
なお今回のプログラムは、石立喬氏によるCodeZineの記事 http://t.co/Evj57N4muI を参考にしています。
プチコンのプ。 @p4petitcom
樹木曲線サブルーチン、再帰部分。プチコンで◎TREEから◎TREEを呼ぶと、変数を上書きしてバグります。そこで、今回は配列変数STをスタックとして使い、上書きしては困る変数の値をセーブします。 http://t.co/jLRkAmLtia
拡大
プチコンのプ。 @p4petitcom
再帰の続き。スタックに保存した数値を呼び戻し、さらに◎TREEを呼びます。まあ、意味わからなくても気にしないで。 http://t.co/OcqS4wKyb2
拡大
プチコンのプ。 @p4petitcom
Nが0のとき、枝を描いて戻ります。戻ってから、さっきの一連の◎POPの呼び出しが起こります。再帰プログラムはちょっとややこしい。 http://t.co/rqJD2Ny5zh
拡大
プチコンのプ。 @p4petitcom
◎PUSHは、変数Pを配列STの最後に置き、◎POPは配列STの最後の数値を変数Pに戻します。変数をPUSHした順番と逆にPOPしなくちゃいけない。
プチコンのプ。 @p4petitcom
この樹木曲線プログラムを実行すると、こんな画像が出ます。Nの値を変えたり、SRやBRの値を変えると、いろいろな木が描けます。 http://t.co/UMZDcJeImS
拡大
プチコンのプ。 @p4petitcom
N=2〜4くらいだと枝ばかりだけど、Nをふやすとだんだん葉が繁ってきます。Nを10にするとかなり時間がかかります。左から右へ、上から下へ描いている様子がわかります。
プチコンのプ。 @p4petitcom
今日はここまで。次回、ちょっと改造してみます。
プチコンのプ。 @p4petitcom
その10 樹木曲線で春よ来い! 2
プチコンのプ。 @p4petitcom
6,7行で背景を設定。9〜14行で角度、幹や枝の割合をランダムに設定します。 http://t.co/9nskfv9AO5
拡大
プチコンのプ。 @p4petitcom
枝の長さCLが短いとき、緑色で描きます。 http://t.co/x0q7PbaCEM
拡大
プチコンのプ。 @p4petitcom
値によっては貧相な木が…なぜか左右対称にならない。誤差なのかバグなのか。 http://t.co/njJA5Iv2FE
拡大
プチコンのプ。 @p4petitcom
今回はここまで。INPUT文で好きな数字を入れられるようにしてもいいですね。
プチコンのプ。 @p4petitcom
その10 樹木曲線で春よ来い! #3
プチコンのプ。 @p4petitcom
前回はINPUT文と言って締めましたが、ここはプチコンらしくタッチペンで角度やレベルを入力することにします(^^)
プチコンのプ。 @p4petitcom
まず幹となる縦線を引き、その長さをレベルの深さに対応させます。次にその幹から斜めに線を出し、枝の割合と角度を決めようという寸法。
残りを読む(16)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする