Il programma è il seguente, preso dal libro Fractals fot the classroom - Part one: Introduction to fractals and chaos [Peitgen, Jürgens, Saupe; Springer-Verlag, 1992; p. 207]. Il suo scopo è quello di disegnare la curva di Koch.
codice:
DIM xleft(10), xright(10), yleft(10), yright(10)
INPUT "Peak offset (0.29):", r
level = 5
xleft(10) = 30
xright(10) = 30 + 300
yleft(10) = 190
yright(10) = 190
GOSUB 100
END
REM DRAW AT LOWEST LEVEL OF RECURSION
100 IF level > 1 GOTO 200
LINE (xleft(1), yleft(1)) - (xright(1), yright(1))
GOTO 300
REM BRANCH INTO LOWER LEVELS
200 level = level - 1
REM LEFT BRANCH
xleft (level) = xleft (level + 1)
yleft (level) = yleft (level + 1)
xright (level) = 0.333 * xright (level + 1) + 0.667 * xleft (level + 1)
yright (level) = 0.333 * yright (level + 1) + 0.667 * yleft (level + 1)
REM MIDDLE LEFT BRANCH
xleft (level) = xright (level)
yleft (level) = yright (level + 1)
xright (level) = 0.5 * xright (level + 1) + 0.5 * xleft (level + 1) - offset * (yleft (level + 1) - yright (level + 1))
yright (level) = 0.5 * yright (level + 1) + 0.5 * yleft (level + 1) - offset * (xleft (level + 1) - xright (level + 1))
REM MIDDLE RIGHT BRANCH
xleft (level) = xright (level)
yleft (level) = yright (level)
xright (level) = 0.667 * xright (level + 1) + 0.33 * xleft (level + 1)
yright (level) = 0.667 * yright (level + 1) + 0.33 * yleft (level + 1)
REM RIGHT BRANCH
xleft (level) = xright (level)
yleft (level) = yright (level)
xright (level) = xright (level + 1)
yright (level) = yright (level + 1)
level = level + 1
300 RETURN
Però malgrado le vostre spiegazioni non riesco a capire come funziona esattamente (e quindi come tradurlo in C++ dove i GOTO, fortunatamente, non esistono! )