タ-トルグラフィックス

タ-トルコマンド

タ-トルグラフィックスとは,プログラミング言語LOGOなどで有名なグラフィックスメソッドである.これはタ-トル(亀)に長さと角度を指定して線分を描いてグラフィックスを描いていくので,このような名前がついた.Mathematicaでは前後左右を次のように定義して,pathのリストを作成する.

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

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

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

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

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

showturtlepath := Show[Graphics[Line[path]], PlotRange->All, AspectRatio->Automatic]

多角形

正n角形を描くために,次のように関数を定義する.

polygon[n_] := (initial[] ; Do[left[360/n] ; forward[1], {n}] ; showturtlepath)

8角形を描く.

polygon[8]

[Graphics:HTMLFiles/index_10.gif]

- Graphics -

渦巻き線(螺旋)

渦巻き線を描くために,次のように拡大比と角度を次のように定義する.

spiral[angle_, ratio_] := (initial[] ; Do[left[angle] ; forward[i], {i, 1, ratio}] ; showturtlepath)

spiral[60, 20]

[Graphics:HTMLFiles/index_14.gif]

- Graphics -

フラクタル図形(再帰的な考え方)

タ-トルグラフィックスを再帰的に使うことで,フラクタル図形を描くことができる.ここでは,コッホの曲線(雪片曲線)を描いてみよう.まずは関数Kochを再帰的に定義する.

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

koch[length_, depth_] := (
koch[length/3, depth - 1] ; 
      &n ... sp;         left[110] ; 
koch[length/3, depth - 1]) ;

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

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

[Graphics:HTMLFiles/index_20.gif]

[Graphics:HTMLFiles/index_21.gif]

[Graphics:HTMLFiles/index_22.gif]

[Graphics:HTMLFiles/index_23.gif]

[Graphics:HTMLFiles/index_24.gif]

[Graphics:HTMLFiles/index_25.gif]

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

koch2[length_, depth_] := (
koch[length/3, depth - 1] ; 
      & ... bsp;         left[59] ; 
koch[length/3, depth - 1]) ;

<<Graphics`ParametricPlot3D` ;

RowBox[{
, RowBox[{RowBox[{g1, =, RowBox[{ParametricPlot3D, [, RowBox[{{Sin[v] Cos[u], Tan[v]  ... oints -> {100, 50}, ,, Boxed -> False, ,, Axes -> None, ,, DisplayFunction -> Identity}], ]}]}], ;}]}]

RowBox[{RowBox[{g4, =, RowBox[{ParametricPlot3D, [, RowBox[{{Cos[v] Tan[u]/2, Tan[v] Cos[u]/2, ... tPoints -> {100, 50}, ,, Boxed -> False, ,, Axes -> None, ,, DisplayFunction -> Identity}], ]}]}], ;}]

Show[{g1, g4}, DisplayFunction -> $DisplayFunction]

[Graphics:HTMLFiles/index_33.gif]

- Graphics3D -

<<RealTime3D` <<Graphics`ParametricPlot3D` ; RowBox[{SphericalPlot3D, [, RowBox[{2 ... wBox[{2, ,, 1, ,, 0.3}], }}]}], ,, PlotPoints -> {50, 50}, ,, Boxed -> False, ,, Axes -> None}], ]}]

-Graphics3D-

- Graphics3D -


Created by Mathematica  (December 8, 2006)