int posx1, posy1, posx2, posy2, posx12, posy12; float sinval_aileD, cosval_aileD, sinval_cursD, cosval_cursD, sinval_aileG, cosval_aileG, sinval_cursG, cosval_cursG; float angle_aileD = HALF_PI; float angle_cursD = 0; float angle_aileG = 3 * HALF_PI; float angle_cursG = TWO_PI; float vitesse_aileD = PI/30; float vitesse_aileG = PI/30; float rayon_ailes = 20.0; float vitesse_cursD = PI/30; float vitesse_cursG = PI/30; float rayon_curs = 16.0; float x_aileD, y_aileD, x_cursD, y_cursD, x_aileG, y_aileG, x_cursG, y_cursG; void setup(){ size(600, 600); background(0); frameRate(12); smooth(); posx1 = width/2; posy1 = height/2; posx2 = 400; posy2 = 300; posx2 = posx1 + int (random(-100, 100)); posy2 = posy1 + int (random(-100, 100)); } void draw(){ noStroke(); fill(0); rect(0, 0, width, 20); noStroke(); fill(0); rect(0, 0, width, height); posx1 = posx1 + ((posx2 - posx1)/9); posy1 = posy1 + ((posy2 - posy1)/9); if (posx2 < 0 || posx2 > 600){ posx2 = int(random (100, 500)); } if (posy2 < 0 || posy2 > 600){ posy2 = int(random (100, 500)); } posx12 = posx1 - posx2; posy12 = posy1 - posy2; if (posx12 < 20 && posx12 > -20 && posy12 < 20 && posy12 > -20){ posx2 = posx1 + int (random(-150, 150)); posy2 = posy1 + int (random(-150, 150)); } //boule fill(255, 128); ellipse(posx2, posy2, 5, 5); translate(posx1, posy1); float a = atan2(posy2 - posy1, posx2 - posx1); rotate(a); //queue stroke(51); beginShape(); vertex(-20, 0); vertex(-40, -10); vertex(-30, 0); vertex(-40, 10); endShape(CLOSE); //mvt aile droite sinval_aileD = sin (angle_aileD); cosval_aileD = cos (angle_aileD); sinval_cursD = sin (angle_cursD); cosval_cursD = cos (angle_cursD); x_aileD = cosval_aileD * rayon_ailes; y_aileD = sinval_aileD * rayon_ailes; angle_aileD += vitesse_aileD; x_cursD = cosval_cursD * rayon_curs; y_cursD = sinval_cursD * rayon_curs; angle_cursD += vitesse_cursD; if (angle_aileD > PI || angle_aileD < HALF_PI){ vitesse_aileD = - vitesse_aileD; } if (angle_cursD > HALF_PI || angle_cursD < 0){ vitesse_cursD = - vitesse_cursD; } //mvt aile gauche sinval_aileG = sin (angle_aileG); cosval_aileG = cos (angle_aileG); sinval_cursG = sin (angle_cursG); cosval_cursG = cos (angle_cursG); x_aileG = cosval_aileG * rayon_ailes; y_aileG = sinval_aileG * rayon_ailes; angle_aileG -= vitesse_aileG; x_cursG = cosval_cursG * rayon_curs; y_cursG = sinval_cursG * rayon_curs; angle_cursG -= vitesse_cursG; if (angle_aileG > 3 * HALF_PI || angle_aileG < PI){ vitesse_aileG = - vitesse_aileG; } if (angle_cursG > TWO_PI || angle_cursG < 3 * HALF_PI){ vitesse_cursG = - vitesse_cursG; } //ailes fill(255,128); stroke(51); bezier(0, 10, x_cursD, y_cursD + 10, x_aileD, y_aileD + 10, x_aileD, y_aileD + 10); bezier(0, -10, x_cursG, y_cursG - 10, x_aileG, y_aileG - 10, x_aileG, y_aileG - 10); //corps stroke(51); fill(255, 128); ellipse (0, 0, 50, 16); //yeux fill(51,50); stroke(0); ellipse (12, 4, 5, 5); ellipse (12, -4, 5, 5); fill(0); point (13, 4); point (13, -4); }