Créons un programme pour "simuler un tag"
Dans un premier temps explorons le mode HSB pour gérer les couleurs.
Les "canaux" "HSB" correspondent : H = Hue - Teinte, S = Saturation - Saturation et B = Brightness - Brillance
- H est un nombre variant entre 0 et 360.
- S et B sont des pourcentages et varient donc entre 0 et 100%.
Le programme suivant fait varier le fond du canvas en utilisant les flêches gauche et droite du clavier:
L'instruction hue = constrain(hue,0,360); oblige la variable hue à rester comprise entre 0 et 360.
Travail à réaliser
- Copiez - collez le programme ci-dessous dans Processing3 en mode P5js
- Réalisez quelques "tag" et enregistrer les images obtenues
- Rajoutez ce qu'il faut pour qu'en appuyant sur la touche 'e' le dessin s'efface
- Réalisez une galerie de "tag" créés par vous...(Projet)
- Pour les plus courageux...Remplacez le changement de couleur (flèches du clavier) par un "slider" Allez voir là avec la librairie Dom
var teinte; // stocker la teinte d'une couleur
function setup() {
createCanvas(windowWidth, windowHeight);
background(0);
teinte = 255; // intialisation à bleu
colorMode(HSB, 360, 100, 100, 100); // appliquer le mode HSB
}
function draw() {
var taille = (abs(pmouseX-mouseX)+abs(pmouseY-mouseY)) + 10 ;
if (mouseIsPressed) { // si la souris est clickée on dessine avec la fonction de dessin définie ci-dessous
spray(mouseX, mouseY, taille);
}
if (keyIsDown(LEFT_ARROW)) { // si la flêche de gauche est préssée
teinte = teinte -1 ; // on modifie la teinte
teinte = constrain(teinte, 0, 360); // on s'assure de rester dans le cadre des valeurs utilisables
}
if (keyIsDown(RIGHT_ARROW)) {
teinte = teinte +1;
teinte = constrain(teinte, 0, 360);
}
// dessiner un petit carré représentant la teinte sélectionnée
fill(teinte, 100, 100, 100);
rect(0, windowHeight -25, 25, 25);
}
// fonction permettant de dessiner un ensemble de taches de couleurs dans un rayon défini
// ce rayon dépendera de la vitesse de la souris
function spray(x, y, taille) {
push();
noStroke();
fill(teinte, 100, 100, 20); // on applique la teinte et on garde une transparence importante
translate(x, y);
for (var i = 0; i < 150; i = i+1) {
// coordonées polaire = rayon + angle
var radius = random(taille) ;
var angle = random(TWO_PI);
// formule de passage de coordonées polaires en coordonnées catésienne
var xpos = radius*cos(angle);
var ypos = radius*sin(angle);
// on dessine une ellipse dont la taille dépend de son éloignement
ellipse(xpos, ypos, map(radius, 0, taille, taille/5, 0), map(radius, 0, taille, taille/5, 0));
}
pop();
}