SCREEN 13 RANDOMIZE TIMER REM CONSTANTS AND DIMENSIONS DIM P(4, 150, 2) PI = 3.141592654# CX = 160 CY = 100 RM = 90 isStart = 0 3310 REM ART FORMS 20-22 3320 RS = 0: EL = 1: SL = RND(1) * .5: GOTO 3350 3330 SL = RND(1) * .4 + .4: EL = SL: RS = RND(1) * (.8 - SL): GOTO 3350 3340 SL = RND(1): EL = RND(1): RS = (1 - SL) * RND(1) * .8: IF ABS(EL - SL) < .3 GOTO 3340 3350 NS = INT(RND(1) * 8 + 5) 3360 OV = INT(RND(1) * 2 + 1) 3370 NA = INT((RND(1) * 41 + 120) / NS) 3380 NR = OV * NA / ((INT(NA / OV) * OV + 1) * NS) 3390 GOTO 3540 3400 RS = RND(1) * .5: SL = RND(1) * .36 + .04: EL = SL 3410 NS = INT(RND(1) * 6 + 5) 3420 NR = (1 - EL - RS) / (NS * (SL + 4 / RM)) 3430 NA = INT(NR * (RND(1) * 41 + 100)) 3440 GOTO 3540 3450 IF RND(1) - .5 > 0 THEN RS = 0: GOTO 3470 3460 RS = RND(1) * .2 + .1 3470 SL = RND(1) * .04 + .06 3480 IF RND(1) - .5 > 0 THEN EL = SL: GOTO 3500 3490 EL = RND(1) * SL * .5 3500 NR = RND(1) * 31 + 20 3510 NA = INT(RND(1) * 31 + 40) 3520 NS = INT(500 / NA) 3530 IF ABS(NR / NS - INT(NR / NS)) < .1 GOTO 3500 3540 GOSUB chooseColor 3550 REM GRAPH ROUTINE 3560 DI = SGN(RND(1) - .5) 3570 IA = 2 * PI * NR / NA * DI 3580 FOR I = 0 TO NS - 1 3590 ISR = RM * (1 - EL - RS) / NA 3600 ILR = RM * (1 - RS - SL) / NA 3610 IF NN = 9 OR NN = 27 OR NN = 19 THEN ISR = ISR * 2: ILR = ILR * 2 3620 LR = RM * (RS + SL): SR = RM * RS 3630 AN = I * 2 * PI / NS * DI 3640 IF NN = 9 OR NN = 27 OR NN = 19 THEN AN = AN - PI * DI / NS 3650 FOR J = 0 TO NA 3660 CA = COS(AN): SA = SIN(AN) 3670 LINE (CX + SR * SA, CY - SR * CA)-(CX + LR * SA, CY - LR * CA): GOSUB Pause 3680 AN = AN + IA: LR = LR + ILR: SR = SR + ISR 3690 IF LR > RM + ILR / 4 AND NA - INT(NA / 2) * 2 = 0 THEN ILR = -ILR: LR = LR + 2 * ILR: ISR = -ISR: SR = SR + 2 * ISR 3700 IF LR > RM + ILR / 4 THEN ILR = -ILR: LR = LR + ILR: ISR = -ISR: SR = SR + ISR 3710 3720 NEXT J 3730 NEXT I 3740 GOSUB Pause: GOTO 3310 Pause: FOR j1 = 1 TO 10000 IF INKEY$ <> "" THEN GOTO endProgram END IF NEXT RETURN chooseColor: IF RND - .5 > 0 THEN COLOR 7 ELSE IF RND - .5 > 0 OR isStart = 0 THEN COLOR 4 ELSE COLOR 0 END IF END IF 'CLS isStart = 1 RETURN endProgram: COLOR 7 END ' TODO: ' remove linenumbers ' more colors