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度クリックすると、下図のようにコッホ曲線が作図されます。