//Variables pour la position d'un point a(x,y) float a_x; float a_y; //Variables pour la position d'un point b(x,y) float b_x; float b_y; //Variables pour la variation de la couleur des lignes et du ramplissage float deltafill; int Fill = 255; //Variables pour la variation de signe lors du passage de a vers b int signe = -1; int puissance; //Constante donnant la distance entre a et b int distance_a_b = 12; int i; void setup() { i = 1; size (900,400); background(0); stroke(Fill); fill(Fill); smooth(); //dessiner le premier cercle //on commance par définire de manière aléatoire la position du point a a_x = random (0,900); a_y = random (0,400); //on donne un signe aléatoir à la variable signe signe = -1; puissance = int(random (0,5)); //définir la position de b par rapport à a et signe b_x = random (-5,5); b_y = sqrt (sq(distance_a_b)-sq(b_x)); b_x=b_x+a_x; signe = int(pow(signe, puissance + 1)); b_y=signe*b_y+a_y; //dessiner une ellipse centrée sur b de diamètre distance_a_b/2 ellipse (b_x,b_y,distance_a_b/2,distance_a_b/2); //dessiner la ligne qui relie a à b line (a_x,a_y,b_x,b_y); } void draw() { i++; //mêmes opérations que setup mais pour les cercles suivants a_x = b_x; a_y = b_y; signe = -1; puissance = int(random (0,5)); b_x = random (-12,12); b_y = sqrt (sq(distance_a_b)-sq(b_x)); b_x=b_x+a_x; signe = int(pow(signe, puissance + 1)); b_y=signe*b_y+a_y; ellipse (b_x,b_y,distance_a_b/2,distance_a_b/2); line (a_x,a_y,b_x,b_y); b_x=(b_x+width)%width; b_y=(b_y+height)%height; //changement aléatoire de la couleur deltafill = random(-50,50); fill(int(Fill+deltafill)%255); stroke(int(Fill+deltafill)%255); } void mousePressed() { //redémarage du programme lorsque l'on clique sur la souris setup(); }