xxxxxxxxxx
84
// Résolution de la forme, plus ce chiffre est élevé plus la forme a de vecteurs
var formResolution = 15;
// change l'espace entre les formes et déforme plus rapidement la forme
var stepSize = 1;
// change la taille de la forme
var initRadius = 50;
var centerX;
var centerY;
var x = [];
var y = [];
function setup() {
createCanvas(600, 400);
// initialiser la forme
centerX = width / 2;
centerY = height / 2;
var angle = radians(360 / formResolution);
for (var i = 0; i < formResolution; i++) {
x.push(cos(angle * i) * initRadius);
y.push(sin(angle * i) * initRadius);
}
stroke(color(0, 0, 255));
strokeWeight(0.5);
background(255);
fill(254, 150, 160);
}
function draw() {
// la forme se dirige vers la position de la souris
centerX += (mouseX - centerX) * 0.01;
centerY += (mouseY - centerY) * 0.01;
// dessiner les nouvelles formes
for (var i = 0; i < formResolution; i++) {
x[i] += random(-stepSize, stepSize);
y[i] += random(-stepSize, stepSize);
}
// démarrer le dessin de la forme
beginShape();
// dessiner le premier poins
curveVertex(x[formResolution - 1] + centerX, y[formResolution - 1] + centerY);
// dessiner les autres points
for (var i = 0; i < formResolution; i++) {
curveVertex(x[i] + centerX, y[i] + centerY);
}
curveVertex(x[0] + centerX, y[0] + centerY);
// dessiner le dernier point
curveVertex(x[1] + centerX, y[1] + centerY);
// terminer la forme
endShape();
}
function mousePressed() {
// créer une nouvelle forme au clic de la souris à l'endroit de la souris
centerX = mouseX;
centerY = mouseY;
var angle = radians(360 / formResolution);
var radius = initRadius * random(0.5, 1);
for (var i = 0; i < formResolution; i++) {
x[i] = cos(angle * i) * initRadius;
y[i] = sin(angle * i) * initRadius;
}
}
// fonction qui s'exécute quand une touche est relâchée
function keyReleased() {
// appuyer sur "s" permet d'enregistrer l'image
if (key == 's' || key == 'S') {
saveCanvas(year()+month()+day()+'-'+hour()+ minute() + second() +'_shapes'+ '.jpg');
}
// appuyer sur effacer permet d'effacer tout
if (keyCode == DELETE || keyCode == BACKSPACE){
background(255);
}
}