initial[start_: {0, 0}] := (X = start ; U = {1, 0} ; path = {X})

General :: spell1 : スペル間違いの可能性があります.新規シンボル\"path\"はすでにあるシンボル\"Path\"に似ています.  詳細

right[a_] := U = {{Cos[aa = a Degree//N], Sin[aa]}, {-Sin[aa], Cos[aa]}} . U

General :: spell1 : スペル間違いの可能性があります.新規シンボル\"right\"はすでにあるシンボル\"Right\"に似ています.  詳細

left[a_] := U = {{Cos[aa = a Degree//N], -Sin[aa]}, {Sin[aa], Cos[aa]}} . U

General :: spell1 : スペル間違いの可能性があります.新規シンボル\"left\"はすでにあるシンボル\"Left\"に似ています.  詳細

forward[s_] := AppendTo[path, X += s U]

General :: spell1 : スペル間違いの可能性があります.新規シンボル\"forward\"はすでにあるシンボル\"Forward\"に似ています.  詳細

back[s_] := AppendTo[path, X -= s U]

そして,pathのリストを作成後,Line文で線分を描く.

RowBox[{showturtlepath, :=, RowBox[{Show, [, RowBox[{RowBox[{Graphics, [, RowBox[{{, RowBox[{R ... 0.5}], ]}], ,, Line[path]}], }}], ]}], ,, PlotRange->All, ,, AspectRatio->Automatic}], ]}]}]

koch[length_, 0] := forward[length] ;

RowBox[{RowBox[{koch[length_, depth_], :=, RowBox[{(, 
, RowBox[{koch[length/4, depth - 1], ;, ... p;           , left[30], ;}], 
, )}]}], ;}]

RowBox[{snow[n_], :=, RowBox[{(, RowBox[{initial[], ;, RowBox[{koch, [, RowBox[{1., ,, n}], ]}], ;, right[10], ;, showturtlepath}], )}]}]

Table[snow[i], {i, 1, 4}]

[Graphics:HTMLFiles/index_15.gif]

[Graphics:HTMLFiles/index_16.gif]

[Graphics:HTMLFiles/index_17.gif]

[Graphics:HTMLFiles/index_18.gif]

{- Graphics -, - Graphics -, - Graphics -, - Graphics -}


Created by Mathematica  (January 11, 2008)