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