再帰図形とL-System
フラクタルCGコレクション(渕上季代絵著:サイエンス社) (以下,「この本)では,「再帰図形2」として,任意の図形による再帰図形を考えています。そこに進む前に,L-systemによるフラクタルの描画を考えておきます。
L-system については,かつて5回にわたって書きました。このとき使った言語はPython です。高校の「情報Ⅰ」のプログラミングでも使えることを想定しています。
ここで使っているタートルグラフィクスは,ドリトルなどのタートルグラフィクスとは異なり,回転角は一定,進む距離も一定です。コッホ曲線を描く例を「PythonでL-Systemsを作る(2) 置き換えシステム」で解説しています。コッホ曲線では,必要なコマンドは
F 前へ描画しながら進む:実際には forward() として関数を作る
+ 反時計回り(左:正の角)に向きを変える
- 時計回り(右:負の角)に向きを変える
の3つだけ。+ , - で回転する角は絶対値が同じで,一つしか指定しません。もし 60°であれば,- でマイナス60°,++ で120°ということになります。
最初に実行するコマンドを イニシエータといい,コッホ曲線では initiator = "F" つまり「前進」だけです。これをジェネレータ generator = {"F":"F+F--F+F"} で置き換えていきます。「 F を F+F--F+F で置き換える」という意味です。
この「置き換え」が「再帰」になるので,この本の再帰図形と同じ意味になります。
これに対し,この本の「再帰図形2」で扱っているのはタートルグラフィクスではなく,いくつかの点を結んだ任意の図形です。それを,コッホ曲線のジェネレータにすればコッホ曲線が描けるわけです。その話は次回。