// declaration des variables du programme int taille = 120; // taille de l'image int spots = 3; // nombre de points par ligne/colonne int[][] tab; // la tableau des points int space; // l'espacement entre les points // dessin generatif void setup(){ // on initialise le dessin background(#dedede); size(taille, taille); space = taille / (spots + 1); // on remplit aleatoirement le tableau des points */ tab = new int[spots][spots]; for(int i = 0; i < spots; i++){ for(int j = 0; j < spots; j++){ // avec differentes valeurs tab[i][j] = floor(random(0, spots+1)); // signifiant "rien", "blanc" ou "bleu" } } // on parcours une premiere fois le tableau // pour dessiner les halos for(int i = 0; i < spots; i++){ for(int j = 0; j < spots; j++){ if(tab[i][j] >= int((spots+1)/2)){ noStroke(); // pas de contour if(tab[i][j] >= 3*int((spots+1)/4)){ // selon la valeur fill(35, 101, 176, 50); //remplissage bleu } else{ fill(255, 255, 255, 120); // remplissage blanc } // et on dessine le disque ellipse((i + 1)*space, (j+1)*space, 2*space, 2*space); } } } stroke(0); // on reactive les contours // on lance une autre boucle // pour tracer des connexion for(int i = 0; i < spots*spots; i++){ // on calcule des coordonnees aleatoires int a = floor(random(0, spots)); int b = floor(random(0, spots)); int c = floor(random(0, spots)); int d = floor(random(0, spots)); // et si il y a des points a chaque extremite if(tab[a][b] >= int((spots+1)/2) && tab[c][d] >= int((spots+1)/2)){ // on dessine la connexion line((a+1)*space, (b+1)*space, (c+1)*space, (d+1)*space); } } // on parcours un seconde fois le tableau // pour dessiner les points, cette fois for(int i = 0; i < spots; i++){ for(int j = 0; j < spots; j++){ if(tab[i][j] >= int((spots+1)/2)){ if(tab[i][j] >= 3*int((spots+1)/4)){ // selon la valeur fill(35, 101, 176); // remplissage bleu } else{ fill(255); // remplissage blanc } // et on dessine le disque ellipse((i + 1)*space, (j+1)*space, space/2, space/2); } } } }