Aller au contenu
PROJET WEB UI/UX

Couleurs

Les Couleurs

🎯 Objectif : Maîtriser le système de couleurs de p5.js, des niveaux de gris jusqu'aux couleurs RGB avec transparence. À la fin de ce chapitre, tu seras capable de colorier n'importe quelle forme avec la couleur exacte que tu veux.

Les niveaux de gris

La façon la plus simple d'utiliser les couleurs en p5.js : une seule valeur entre 0 et 255.

Valeur Couleur
0 ⬛ Noir complet
64 Gris foncé
128 Gris moyen
192 Gris clair
255 ⬜ Blanc complet
background(240);        // Fond gris très clair

fill(0);                // Noir
rect(20, 20, 80, 80);

fill(128);              // Gris moyen
rect(120, 20, 80, 80);

fill(255);              // Blanc
rect(220, 20, 80, 80);

💡 Pourquoi 255 et pas 100 ? Parce qu'un octet (8 bits) peut stocker des valeurs de 0 à 255. C'est un standard en informatique que tu retrouveras partout : écrans, images, web... D'ailleurs, c'est exactement le même système que les couleurs CSS en rgb() !

Les couleurs RGB

Pour obtenir de vraies couleurs, on utilise le système RGB : Rouge, Vert (Green), Bleu. Chaque composante va de 0 à 255.

fill(rouge, vert, bleu);

Le principe est celui de la synthèse additive : on mélange de la lumière, pas de la peinture ! C'est comme les pixels de ton écran qui combinent trois petites LEDs (rouge, verte, bleue).

Les couleurs primaires

fill(255, 0, 0);    // 🟥 Rouge pur — que du rouge, pas de vert, pas de bleu
fill(0, 255, 0);    // 🟩 Vert pur
fill(0, 0, 255);    // 🟦 Bleu pur

Les mélanges

fill(255, 255, 0);  // 🟨 Rouge + Vert = Jaune
fill(0, 255, 255);  //     Vert + Bleu = Cyan
fill(255, 0, 255);  // 🟪 Rouge + Bleu = Magenta/Violet
fill(255, 255, 255); // ⬜ Les trois ensemble = Blanc
fill(0, 0, 0);      // ⬛ Aucun = Noir

⚠️ Attention : mélanger de la lumière, c'est l'inverse de la peinture ! En peinture, rouge + vert = marron. En lumière (RGB), rouge + vert = jaune. C'est surprenant mais c'est comme ça que fonctionnent tous les écrans.

Mémo des couleurs courantes

Voici les codes RGB des couleurs que tu utiliseras le plus souvent :

Couleur Code RGB Astuce pour retenir
⬛ Noir 0, 0, 0 Tout à zéro
⬜ Blanc 255, 255, 255 Tout au max
🟥 Rouge 255, 0, 0 Premier à fond
🟩 Vert 0, 255, 0 Deuxième à fond
🟦 Bleu 0, 0, 255 Troisième à fond
🟨 Jaune 255, 255, 0 Rouge + Vert
🟧 Orange 255, 165, 0 Rouge + un peu de Vert
🟪 Violet 128, 0, 128 Rouge + Bleu (à moitié)
Cyan 0, 255, 255 Vert + Bleu
🦩 Rose 255, 192, 203 Beaucoup de tout, surtout Rouge
🤎 Brun 139, 69, 19 Rouge dominant, peu de Vert
🪨 Gris 128, 128, 128 Les trois égaux (entre noir et blanc)

💡 Astuce : pas besoin de retenir tout ça par cœur ! Tu peux utiliser n'importe quel color picker en ligne, ou même celui intégré aux DevTools de ton navigateur. Tape "color picker" dans Google et il t'en affiche un directement.

Le lien avec CSS

Tu connais déjà les couleurs en CSS ? Bonne nouvelle, c'est le même système RGB :

CSS p5.js Résultat
color: rgb(255, 0, 0); fill(255, 0, 0); 🟥 Rouge
background-color: rgb(0, 0, 0); background(0, 0, 0); ⬛ Noir
border-color: rgb(0, 0, 255); stroke(0, 0, 255); 🟦 Contour bleu

Les valeurs sont exactement les mêmes — seule la syntaxe change !

Où utiliser les couleurs ?

Les couleurs s'appliquent à trois endroits :

Fonction Ce qu'elle colorie Exemple
background(r, g, b) Le fond du canevas background(135, 206, 235); → ciel bleu
fill(r, g, b) L'intérieur des formes fill(255, 0, 0); → formes rouges
stroke(r, g, b) Le contour des formes stroke(0, 0, 255); → contour bleu

Chacune de ces fonctions accepte les mêmes formats :

fill(128);            // 1 valeur  → niveau de gris
fill(255, 0, 0);      // 3 valeurs → couleur RGB
fill(255, 0, 0, 128); // 4 valeurs → couleur RGB + transparence

La transparence

On peut ajouter un 4e nombre pour la transparence (appelée alpha), de 0 (invisible) à 255 (opaque) :

fill(255, 0, 0, 255);  // Rouge complètement opaque (par défaut)
fill(255, 0, 0, 180);  // Rouge un peu transparent
fill(255, 0, 0, 100);  // Rouge assez transparent
fill(255, 0, 0, 30);   // Rouge presque invisible

C'est très utile pour superposer des formes et créer des effets de profondeur ou de verre :

background(240);

// Cercle bleu
fill(0, 0, 255);
ellipse(180, 150, 150, 150);

// Cercle rouge semi-transparent par-dessus
fill(255, 0, 0, 120);
ellipse(250, 150, 150, 150);

💡 Astuce : la transparence fonctionne aussi avec stroke() :

stroke(0, 0, 0, 100);  // Contour noir semi-transparent

Stocker une couleur dans une variable

p5.js possède une fonction color() pour créer des couleurs et les stocker dans des variables. C'est pratique quand tu utilises souvent la même couleur :

let rouge = color(255, 0, 0);
let bleuCiel = color(135, 206, 235);

background(bleuCiel);
fill(rouge);
rect(50, 50, 100, 80);

On verra les variables en détail dans un prochain chapitre, mais sache que ça existe !

Mini-exemple : une scène colorée

Voici un exemple qui combine tout ce qu'on a vu dans les trois chapitres d'introduction — formes, couleurs, remplissage, contour et ordre de dessin :

function setup() {
  createCanvas(500, 400);
}

function draw() {
  // Ciel
  background(135, 206, 235);

  // Soleil (jaune, sans contour)
  noStroke();
  fill(255, 220, 50);
  ellipse(420, 60, 80, 80);

  // Sol (vert)
  fill(80, 180, 80);
  rect(0, 300, 500, 100);

  // Maison : mur (marron avec contour)
  stroke(100, 60, 30);
  strokeWeight(2);
  fill(200, 120, 80);
  rect(150, 200, 200, 120);

  // Maison : toit (triangle rouge)
  fill(180, 40, 40);
  triangle(130, 200, 250, 120, 370, 200);

  // Maison : porte (marron foncé)
  fill(100, 60, 30);
  rect(220, 250, 50, 70);

  // Fenêtres (bleu clair)
  fill(180, 220, 255);
  rect(170, 230, 35, 35);
  rect(295, 230, 35, 35);
}

Remarque l'ordre : le ciel en premier (tout derrière), puis le sol, puis la maison, puis les détails par-dessus. Chaque élément recouvre les précédents.

Résumé

Concept Syntaxe Exemple
Niveau de gris fill(valeur) fill(128) → gris moyen
Couleur RGB fill(r, g, b) fill(255, 0, 0) → rouge
Avec transparence fill(r, g, b, a) fill(255, 0, 0, 128) → rouge transparent
Fond du canevas background(r, g, b) background(135, 206, 235) → ciel
Stocker une couleur let nom = color(r, g, b) let c = color(255, 0, 0);
Sélecteur de couleurs Color picker Google / DevTools Trouve n'importe quel code RGB
Valeur RGB Règle
0 Rien de cette composante
128 Moitié
255 Maximum de cette composante
Les 3 égales Niveau de gris (du noir au blanc)
Les 3 à 255 Blanc
Les 3 à 0 Noir