next up previous
Next: 2 正則関数による写像 Up: 1 課題5Bへの一つのヒント: タートルグラフィックス Previous: 1.2 試してみよう&課題6A

1.3 参考: Koch 曲線を描くプログラム

課題とすることには難しさがあるかと思ったので、 こちらがプログラム例を示すことにしました。

$ n/3$ 進み、左に $ 60^\circ$ 曲がり、$ n/3$ 進み、右に $ 120^\circ$ 曲が り、$ n/3$ 進み、左に $ 60^\circ$ 曲がり、$ n/3$ 進む」と、

\includegraphics[width=5cm]{koch0.eps}
このような図になりますが、 「$ n/3$ 進む」ところを 「端点間の距離が $ n/3$ の Koch 曲線を描く」に置き換えると、 「端点間の距離が $ n$ の Koch 曲線を描く」ことができます。

\includegraphics[width=5cm]{koch.eps}


REM KOCH.BAS
OPTION ANGLE DEGREES
SUB right(t)
   LET direction=direction-t
END SUB
SUB left(t)
   LET direction=direction+t
END SUB
SUB walk(s)
   PLOT LINES: xp,yp;
   LET  xp=xp+s*COS(direction)
   LET  yp=yp+s*SIN(direction)
   PLOT LINES: xp,yp
END SUB
REM 端点の距離が n である Koch 曲線を描く
SUB koch(n)
   IF n>1 THEN
      CALL koch(n/3)
      CALL left(60)
      CALL koch(n/3)
      CALL right(120)
      CALL koch(n/3)
      CALL left(60)
      CALL koch(n/3)
   ELSE
      CALL walk(n)
   END IF
END SUB
LET  L=3^8
SET WINDOW -0.1*L,1.1*L,-0.1*L,1.1*L
REM 亀の方向と現在位置
LET  direction=0
LET  xp=0
LET  yp=0
CALL koch(L)
END


next up previous
Next: 2 正則関数による写像 Up: 1 課題5Bへの一つのヒント: タートルグラフィックス Previous: 1.2 試してみよう&課題6A
Masashi Katsurada
平成20年10月18日