E03 コッホ曲線
フラクタル曲線であるコッホ曲線を作図してみます (このページ下部の添付ファイル参照)。
線分を作成するツール (Segs) の準備
C曲線で用いたのと同じツール Segs を定義します。
L = { (1,1), (2,3) }
L2 = Sequence[Segment[Element[L,i],Element[L,i+1]], i, 1, Length[L]-1]
新規ツール: L2 = Segs[L]
コッホ曲線の生成アルゴリズム (KochPts1) の作成
2点のリストを与えると、コッホ曲線の再帰を1ステップ進めた点のリストを返すコマンドを作成します。
A = Element[L,1]
B = Element[L,2]
C = A + (B - A)/3
D = A + (B - A)/3*2
E = Rotate[D, pi/3, C]
L3 = {A, C, E, D}
新規ツール: L3 = KochPts1[L]
コッホ曲線の点を生成するツール (KochPts) の作成
点のリストを与えると、コッホ曲線の再帰を1ステップ進めたリストを返すコマンドを作成します。この定義は、C曲線でのコマンド CPts の定義における CPts1 を KochPts1 に変えただけです。コマンドがファーストクラスならそれをパラメーターとして与えられますが、現状は無理です。
L4 = Join[Sequence[~KochPts1[Take[L,i,i+1]], i, 1, Length[L]-1]]
L5 = Append[L4, Element[L, Length[L]]]
新規ツール: L5 = KochPts[L]
コッホ曲線ツール (KochCurve) の作成
最後に、2点を与えるとコッホ曲線を描画するコマンドを作成します。新規の点 F と G を作成し、
M = { F, G }
とリストを作り、M に KochPts を適用します。得られたリストに再び KochPts を適用し、5回程度繰り返した後、Segs を適用すると コッホ曲線の線分のリストが得られます。ここで、出力オブジェクトをコッホ曲線の線分のリスト、入力オブジェクト F、G として、ツール KochCurve を作成します。入力バーへの入力ならば以下のようになります。
L6 = KochPts[KochPts[KochPts[KochPts[KochPts[M]]]]]
L7 = Segs[L6]
新規ツール: L7 = KochCurve[F, G]
一度オブジェクトをすべて削除してから KochCurve ツールを選択し、グラフィックスビューで2度クリックすると、下図のようにコッホ曲線が作図されます。