RANDOMIZE TIMER pi = ATN(1) * 4 SCREEN 12 LOCATE 6, 1: COLOR 11 'INTRO PRINT " FracSpir Fractale Spiralen" PRINT : COLOR 3 PRINT " Elke spiraalarm krimpt gelijkvormig," PRINT " dus fractaal, onder zijn opvolger-buurman" LOCATE 12, 1: COLOR 7 PRINT " -> SPATIE = END" PRINT PRINT " -> ENTER = Toggel On/Off voor Wachten na elk beeld" PRINT " (Indien Wachten=On, druk dan een toets voor Continue)" PRINT PRINT " -> Andere toets = onderbreken voor Nieuwe FracSpir" PRINT COLOR 14: LOCATE 24, 27: PRINT "Credits: guido wuyts 1997" col = 0 FOR alf = 0 TO 360 STEP 5 col = (col + 1) MOD 7 + 9 a = alf * pi / 180: c = COS(a): s = SIN(a) PSET (x0 + leng * c, y0 + leng * s), col NEXT alf PLAY "l21o3cc+dd+ee-dd-c" col = 11: a$ = "" WHILE a$ = "" COLOR col: LOCATE 27, 28 PRINT "-> Druk een toets..." tijd = TIMER: WHILE TIMER - tijd < .5: WEND IF col = 11 THEN col = 5 ELSE col = 11 a$ = INKEY$ WEND a$ = "": CLS WINDOW (-320, -240)-(320, 240) DEFINT I-K nieuw: 'nieuwe spiraal tijd = TIMER a$ = "": itel = 0 inum = 2 + RND * 13 'aantal spiraalarmen a1 = 2 * pi / inum 'hoekafstand armen inc = (1 + RND * 9) * 90 / inum 'aantal punten over a1 REDIM ij(inc), ipal(inum) CLS ro = 100 + RND * 400 'vertrekstraal dr = 5 + RND * 15: 'straalincrement da = a1 / inc 'hoekincrement FOR i = 0 TO inum - 1 'maak kleuren aan tos: ipal(i) = 1 + RND * 14 FOR j = 0 TO i - 1 IF ipal(i) = ipal(j) THEN GOTO tos NEXT j NEXT i FOR i = 0 TO inc 'maak model spiraalarm r = ro + (-1 + 2 * RND) * dr 'brownse lijn IF r > 500 THEN r = 500 IF r < 50 THEN r = 50 ij(i) = r ro = r NEXT i shr = ij(0) / ij(inc) 'krimpfactor = beginstraal/eindstraal IF shr > 1 THEN shr = 1 / shr 'zin omkeren i0 = 1: i1 = inc: istp = 1 j0 = 0: j1 = inum - 1: jstp = 1 daa = da ELSE i0 = inc - 1: i1 = 0: istp = -1 'of niet... j0 = inum - 1: j1 = 0: jstp = -1 daa = -da END IF IF shr > .95 THEN GOTO nieuw 'te weinig krimp: herbegin her: 'krimpfazen... ij(i0 - istp) = shr * ij(i0 - istp) 'beginpunt ro = ij(i0 - istp) FOR i = i0 TO i1 STEP istp 'punten 1 TO inc a = i * da r = shr * ij(i) 'krimp straal IF ABS(r - ij(i)) < .6 THEN IF b$ = "y" THEN PLAY "o4l42a": SLEEP 'wachten ELSE SLEEP 1: GOTO nieuw 'nieuwe spiraal aanmaken END IF END IF a$ = INKEY$ IF a$ = " " THEN END IF a$ = CHR$(13) THEN IF b$ = "" THEN b$ = "y" ELSE b$ = "" 'wachtparm a$ = "" END IF IF a$ <> "" THEN GOTO nieuw ij(i) = r FOR j = j0 TO j1 STEP jstp '0 TO inum - 1 aa = j * a1 + a IF istp = -1 THEN kl = (j + itel) MOD inum ELSE kl = (inum - j + itel) MOD inum END IF LINE (ro * SIN(aa - daa), ro * COS(aa - daa))-(r * SIN(aa), r * COS(aa)), ipal(kl) NEXT j ro = ij(i) NEXT i itel = itel + 1 GOTO her END