xxxxxxxxxx
75
var couleur;
var x = 0;
var y = 0;
// distance entre 2 lignes
var stepSize = 2;
// taille maximale d'une ligne
var lineLength = 30;
function setup() {
createCanvas(600, 600);
background(255);
strokeWeight(2);
// choisi une couleur au hasard
couleur = color(random(255));
// défini x et y comme la position de la souris
x = mouseX;
y = mouseY;
}
function draw() {
background(255);
// si le bouton gauche de la souris est pressé
// permet de calculer la distance entre le point d'avant et la position de la souris
var d = dist(x, y, mouseX, mouseY);
// si la distance est plus grande que la distance voulu entre deux lignes
if (d > stepSize) {
// Calcule l'angle (en radians) entre un point spécifié et l'origine des coordonnées, tel que mesuré à partir de l'axe x positif.
var angle = atan2(mouseY - y, mouseX - x);
// push(), translate() et rotate permettent de faire tourner et de positionnerl les lignes suivant l'angle calculé
push();
translate(x, y);
rotate(angle);
// appliqué la couleur random à la ligne
stroke(couleur);
// mettre une ligne sur 2 en gris
if (frameCount % 2 == 0) stroke(0);
//dessiner la ligne
bezier(0, 0, 0, lineLength * random(0.95, 1) * d / 10,random(mouseX+random(40)),random(mouseY/4),random(mouseX+80),random(mouseY/2));
// retourner à l'état initial, cette fonction est toujours exécutée après push()
pop();
// calculer les nouvelles positions de x et y suivant l'angle
x = x + cos(angle) * stepSize;
y = y + sin(angle) * stepSize;
}
}
// quand on appuie sur la souris (s'exécute une seul fois)
function mousePressed() {
// calcul les nouvelles positions de x et y suivant la position de la souris
x = mouseX;
y = mouseY;
// génère une nouvelle couleur aléatoire
couleur = color(0, 0,0);
}
// 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() +'_lignes'+ '.jpg');
}
// appuyer sur effacer permet d'effacer tout
if (keyCode == DELETE || keyCode == BACKSPACE){
background(255);
}
}