Sites


Processing

Les couleurs

Dessiner une image à l'écran, c'est changer la couleur des pixels. Les pixels sont des petites zones, le plus souvent carrées, qui possèdent une couleur. Chaque couleur se définit par trois canaux qui sont le rouge, le vert et le bleu. Une valeur de 100% de chacun de ces trois canaux donne du blanc. Une valeur de 0% de chacun de ces trois canaux donne du noir. Il s'agit de lumière, et non de peinture. Ainsi, plus la valeur de chaque canal sera importante, plus la couleur sera lumineuse.

Par exemple, 100% de rouge, 80% de vert et 20% de bleu vont donner ensemble la couleur orange. La méthode fill() nous permet de spécifier la couleur des prochaines formes à dessiner. Chaque canal d'une couleur peut être donné sur une échelle de 0 à 255. Ainsi, 80% de 255 donne 204, et 20% de 255 donne 51.

La couleur de fond

On peut changer la couleur de fond en appelant la méthode background(). Attention : rajouter background() à la suite d'une composition déjà existante, l'effacerait !

background(0, 0, 0);

ab_chaos.tiff

La couleur de remplissage

A chaque fois que l'on dessine une forme, on le fait avec la couleur de remplissage qui est choisie à ce moment-là. On le fait en appelant la méthode fill().

carre_orange.tiff

noStroke();
fill(255, 204, 51);
rect(25, 25, 50, 50);

Processing nous offre différents formats pour exprimer la couleur. Si vous faites de la programmation Web, vous connaissez sans doute le format hexadécimal. Selon ce procédé, la même couleur orange peut être obtenue en écrivant :

fill(#ffcc33);
rect(25, 25, 50, 50);

Par ailleurs, il est possible de spécifier la valeur du canal alpha de la couleur utilisée, c'est-à-dire son degré de transparence. Pour ce faire, on doit donc préciser quatre paramètres à la méthode fill(). Le quatrième argument est la valeur alpha.

noStroke();
fill(255, 204, 51); // orange
rect(25, 25, 50, 50);
fill(255, 255, 255, 127); // blanc semi-transparent
rect(35, 35, 50, 50);

carre_film.tiff

Si l'on souhaite choisir une couleur qui correspond à un ton de gris, il suffit de donner un seul paramètre à la méthode fill(). C'est la valeur de gris, de 0 à 255.

carre_gris.tiff

fill(127);
rect(25, 25, 50, 50);

On peut désactiver le remplissage des formes en appelant la méthode noFill().

La couleur du contour

Pour changer la couleur du contour des formes que l'on dessine, on doit appeler la méthode stroke() avec comme paramètres les canaux de la couleur désirée. Appeler noStroke() désactive la couleur de contour. A titre d'illustration, voici un dessin de masque africain utilisant ces deux instructions :

masque_africain

size(200, 200);
smooth();
background(255); // on dessine un fond blanc

stroke(#000000); // le contour sera noir
fill(#FFCC66);  // le remplissage sera jaune
strokeWeight(3);

translate(width / 2, height / 2);

ellipse(0, 0, 100, 180); // forme elliptique du masque

ellipse(0, 60, 20, 25); // ellipse de la bouche

stroke(255, 0, 0); // le contour sera rouge
ellipse(28, -30, 25, 10);  // ellipse de l'oeil droit

stroke(0, 0, 255); // le contour sera bleu
ellipse(-27, -30, 25, 10); // ellipse de l'oeil gauche

noFill(); // les prochaines formes n'auront pas de remplissage

stroke(#000000);  // le contour des prochaines formes sera noir

bezier(-30, -70, -5, -60, -5, 0, -5, 20); // courbe du sourcil droit

bezier(30, -70, 5, -60, 5, 0, 5, 20); // courbe du sourcil gauche

line(-5, 20, 5, 20); // ligne du nez pour joindre l'extrémité des courbes

La portée des modifications de couleur

Par défaut, toute modification de style (couleur de remplissage ou de contour, épaisseur ou forme de trait) s'appliquera à tout ce que vous dessinerez ensuite. Pour limiter la portée de ces modifications, vous pouvez les encadrer par les commandes pushStyle() et popStyle().

multi_quadrat.tiff

size(100, 100);
background(255);

stroke(#000000);
fill(#FFFF00); 
strokeWeight(1);
rect(10, 10, 10, 10);

pushStyle(); // On ouvre « une parenthèse » de style

stroke(#FF0000);
fill(#00FF00);
strokeWeight(5);
rect(40, 40, 20, 20);

popStyle(); // On ferme notre parenthèse de style

rect(80, 80, 10, 10);

Exercice :

Supprimez les commandes pushStyle() et popStyle() et observez la différence de comportement.

L'espace colorimétrique

Définir des couleurs à partir des canaux rouge, vert et bleu constitue un moyen parmi d'autres de décrire l'espace colorimétrique de votre dessin. Processing supporte également le mode TSV. TSV signifie « teinte, saturation, valeur ». En anglais, on appelle ce mode HSB, pour « hue, saturation, brightness ». On choisit une échelle de 0 à 100 pour chacun de ces 3 canaux. La teinte correspond à un chiffre indiquant la position de la couleur sur l'échelle chromatique, soit un arc-en-ciel. Le rouge est à gauche, puis viens l'orange, le jaune, le vert, le bleu et le violet.

La méthode colorMode() est utile pour changer l'échelle numérique que l'on utilise pour spécifier les couleurs, et pour changer d'espace colorimétrique. Par exemple, appeler colorMode(RGB, 1.0), va changer l'échelle que l'on utilise pour spécifier chaque canal des couleurs afin qu'il aille de zéro à un.

Ici, on change le mode de couleur pour le TSV afin de créer un dégradé de teinte qui ressemble aux couleurs d'un arc-en-ciel.

color_spectrum.tiff

noStroke();
size(400, 128);

// La teinte sera spécifiée avec un chiffre de 0 à 400
colorMode(HSB, 400, 100, 100);

// On fait quatre cent répétitions
for (int i = 0; i < 400; i++) {
  fill(i, 128, 128);
  rect(i, 0, 1, 128);
}

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.