Developed by Swedish mathematician Helge von Koch in 1904, this algorithm splits a line into three parts, adds a fourth line and realigns the lines with a specific degree. p is the number of recursions and should be less than 5.
> koch := proc(p: numeric) > # SNOWFLAKE > # algorithm taken from 'Algorithmen fuer Chaos und Fraktale' > # by Dietmar Herrmann, Addison-Wesley > # original program written in BASIC > # ported to Maple V. modified and optimized by Alexander F. Walz > # Version 1.0 - July 27, 1996 > # Version 1.1 - May 23, 1999, twice as fast as v 1.0 > local m, n, k, l, s, h, x, y, pts, t, i; > h := 3^(-p); > pts := table([]): # [0, 0]; > x := 0; y := 0; > for n from 0 to (4^p-1) do > m := n; > s := 0; > for l from 0 to p-1 do > t := irem(m, 4); > m := iquo(m, 4); > s := s+irem((t+1), 3) - 1 > od; # end of for l > x := evalhf(x+cos(Pi*s/3)*h); > y := evalhf(y+sin(Pi*s/3)*h); > pts[n] := [x, y]; > od; # end of for n > [seq(pts[i], i=0 .. n-1)]; > end: > plot(koch(1), scaling=constrained, style=LINE, axes=NONE);
> plot(koch(1), scaling=constrained, style=LINE, axes=NONE);
> plot(koch(2), scaling=constrained, style=LINE, axes=NONE);
> plot(koch(3), scaling=constrained, style=LINE, axes=NONE);
> plot(koch(4), scaling=constrained, style=LINE, axes=NONE);
> plot(koch(5), scaling=constrained, style=LINE, axes=NONE);
MAPLE V FRACTALS KOCHCURVE #1.1 current as of May 23, 1999
Author: Alexander F. Walz, alexander.f.walz@t-online.de
Original file location: http://www.math.utsa.edu/mirrors/maple/mfrkoch.htm