La boucle While()
Ce code utilise la boucle while(). While() est une boucle qui s’exécute un nombre indéfini de fois, en fonction de la condition qui se trouve à l’intérieur de ses parenthèses. Tant que le résultat du test des parenthèses est vrai, la boucle tourne.
Dans notre cas, on demande à chaque fois si x et y sont à l’intérieur des marges définies en tête du script. Si les coordonnées de x et y dépassent les marges d’un seul des côtés, la boucle s’arrête.
Lorsqu’on utilise while(), on fait bien attention que while sera faux à un moment ou un autre, sans quoi le script sera bloqué...
Sin et cos()
Sin et cos() sont utilisés pour produire les lignes. Les deux fonctions s’utilisent de la même manière : on leur donne un angle en radians (un chiffre entre 0 et deux fois la valeur de PI, soit 6,28 et des poussières) et la fonction répond par un chiffre qui va de -1 à 1, qui exprime la tangente. Les coordonnées du bord d’un point sur le bord d’un cercle, donc.
Ce chiffre qui va de -1 à 1 (sin() sur l’axe x, cos() sur l’axe y) peut ensuite être multiplié par la taille du déplacement (dans ce script, 5).
Voici le code :
int marges=60;
void setup() {
size(800, 1000);
}
void draw() {
background(255);
stroke(180);
dessin_aleatoire();
saveFrame("couverture-####.jpg");
noLoop();
}
void keyPressed() {
loop();
}
void dessin_aleatoire() {
int saut=5; // saute entre chaque ligne, en pixels
float x=random(width*0.3, width*0.7); // point de départ en x
float y=random(height*0.5, height*0.7); // point de départ en y
// la boucle s'exécute tant que le dessin reste à l'intérieur des marges
while (x > marges && x < width-marges && y > marges && marges < height-marges) {
float angle=random(TWO_PI); // angle du prochain mouvement
float nx=x+sin(angle)*saut; // calcul du déplacement en x avec sin()
float ny=y+cos(angle)*saut; // calcul du déplacement en y avec cos()
line(x, y, nx, ny); // ligne entre le point actuel et le nouveu
x=nx; // on stocke la nouvelle valeur nx dans x
y=ny; // on stocke la nouvelle valeur ny dans y
}
}Sur notre exercice, ça donne ça :