Nie miałem ochoty na przepisywanie tego programu z Pascala, to wymyśliłem własną metodę:
pi = 3.14159 'PI
sw = 640 'szerokosc
sh = 480 'wysokosc
scx = sw / 2 'srodek x
scy = sh / 2 'srodek y
'tryb graficzny
SCREEN 12
'dane wejsciwe
INPUT "r (50-300) ="; r 'rozmiar
IF r < 50 THEN r = 50
IF r > 300 THEN r = 300
INPUT "l (1-4) ="; l 'poziom
IF l < 1 THEN l = 1
IF l > 4 THEN l = 4
'rozmiar tablicy
s = 3 * 4 ^ l
'tablice z danymi
DIM a(s, 1)
DIM p(s, 1)
'trojkat startowy
p(0, 0) = r
p(0, 1) = 0
p(1, 0) = r
p(1, 1) = 120
p(2, 0) = r
p(2, 1) = 240
ps = 3
'obliczenia
FOR i = 0 TO l - 1 STEP 1
FOR n = 0 TO ps - 1 STEP 1
a(n * 4, 0) = p(n, 0)
a(n * 4, 1) = p(n, 1)
NEXT n
FOR n = 0 TO ps - 1 STEP 1
W = p(n, 0) / 3
k = p(n, 1)
a(n * 4, 0) = W
a(n * 4, 1) = k
a(n * 4 + 1, 0) = W
a(n * 4 + 1, 1) = k - 60
a(n * 4 + 2, 0) = W
a(n * 4 + 2, 1) = k + 60
a(n * 4 + 3, 0) = W
a(n * 4 + 3, 1) = k
NEXT n
ps = ps * 4
FOR n = 0 TO ps - 1 STEP 1
p(n, 0) = a(n, 0)
p(n, 1) = a(n, 1)
NEXT n
NEXT i
PRINT "Ilosc odcinkow: "; ps
'uklad
LINE (0, scy)-(sw, scy), 8
LINE (scx, 0)-(scx, sh), 8
'rysowanie "wykresu"
x = scx - r / 2
y = scy + r / 3
FOR n = 0 TO ps - 1 STEP 1
xt = COS(p(n, 1) / 180 * pi) * p(n, 0)
yt = -SIN(p(n, 1) / 180 * pi) * p(n, 0)
LINE (x, y)-((x + xt), (y + yt))
x = x + xt
y = y + yt
NEXT n
Jest nieco ograniczona, ale działa.