| 10 '********************
11 '* * 12 '* FONCTIONS EN * 13 '* * 14 '* COULEURS * 15 '* * 16 '******************** 40 DEFINT i,j,c,k,u 50 DEF FNf(x)=COS(x*y*EXP(-y/5)) 100 GOSUB 1000:REM fenetre d'etude 110 GOSUB 3000:REM choix des couleurs 120 GOSUB 4000:REM trace 130 GOSUB 5000:REM animation 140 END 1000 '*************** 1010 'FENETRE D'ETUDE 1020 '*************** 1030 MODE 1:INK 0,0:INK 1,13:BORDER 0 1040 PRINT"Fenetre d'etude :":PRINT 1050 INPUT"Bornes en x :";xi,xs 1060 INPUT"Bornes en y :";yi,ys 1070 INPUT"Calcul de minimax (o/n)";a$ 1080 IF LOWER$(a$)="o" THEN GOSUB 2000:GOTO 1100 1090 INPUT"Bornes en z :";zi,zs 1100 RETURN 2000 '************** 2010 'CALCUL MINIMAX 2020 '************** 2030 PRINT"Patience...." 2040 zi=1000000000290071000000000000000:zs=-1000000000290071000000000000000 2050 FOR i=0 TO 639 STEP 4 2060 x=xi+(xs-xi)*i/639 2070 FOR j=0 TO 399 STEP 4 2080 y=yi+(ys-yi)*j/399 2090 z=FNf(x) 2100 zi=MIN(zi,z) 2110 zs=MAX(zs,z) 2120 NEXT j 2130 NEXT i 2140 RETURN 3000 '****************** 3010 'CHOIX DES COULEURS 3020 '****************** 3030 MODE 0:DIM c(15) 3040 FOR i=0 TO 15 3050 READ c(i):INK i,c(i) 3060 NEXT i 3070 RETURN 3080 DATA 0,1,4,2,5,11,10,13,26,3,7,8,6,15,12,24 4000 '***** 4010 'TRACE 4020 '***** 4030 FOR i=0 TO 639 STEP 4 4040 x=xi+(xs-xi)*i/639 4050 FOR j=0 TO 399 STEP 4 4060 y=yi+(ys-yi)*j/399 4070 z=FNf(x) 4080 k=INT(16*(z-zi)/(zs-zi)) 4090 IF k=16 THEN k=15 4100 PLOT i,j,k:PLOT i,j+2,k 4110 NEXT j 4120 NEXT i 4130 RETURN 5000 '********* 5010 'ANIMATION 5020 '********* 5030 WHILE INKEY$<>CHR$(13):WEND 5040 'on attend que la touche ENTER 5050 'soit pressee pour commencer 5060 EVERY 8 GOSUB 5500 5070 WHILE INKEY$<>CHR$(13):WEND 5080 RETURN 5500 'ROTATION DES COULEURS 5510 u=u+1 5520 FOR i=0 TO 15 5530 INK i,c((i+u) MOD 16) 5540 NEXT i 5550 RETURN |