Si vous souhaitez spécifiquement utiliser une onde sinusoïdale en entrée plutôt que la vague en dents de scie alors vous devez mapper votre entrée (par exemple le temps) dans une certaine gamme de couleurs. Par exemple:
- toutes les 2000 millisecondes valeur augmente de 0 à 2,0
plages de valeurs
- de -1 à 1.
- la sortie sin (valeur) est comprise entre -1 et 1.
- carte la sortie vers une gamme de couleurs.
map() fonctionne bien pour les valeurs de cartographie, mais vous pouvez également utiliser colorMode() pour les gammes de couleurs de cartographie - donc plutôt que de déplacer vos valeurs de sortie sinus autour, juste faire votre sortie 0-2,0 et définissez la valeur RGB max ou HSB à 2,0 au lieu de 255.
Voici quelques exemples, en simultané dans un sketch:
float val;
float out;
void draw() {
background(0);
val = TWO_PI * (millis()%2000)/2000.0; // every 2000 milliseconds value increases from 0 to 2PI
out = sin(val);
// white-black (256-0)
pushStyle();
fill(128 + 128*out);
rect(0,0,50,50);
popStyle();
// red-black (255-0)
pushStyle();
colorMode(RGB, 255);
fill(255*(out+1), 0, 0);
rect(50,0,50,50);
popStyle();
// hue rainbow (0-2)
pushStyle();
colorMode(HSB, 2.0);
fill(out+1, 2, 2);
rect(0,50,50,50);
popStyle();
// hue blue-green (3 to 5/9)
pushStyle();
colorMode(HSB, 9);
fill(out+4, 9, 9);
rect(50,50,50,50);
popStyle();
translate(width/2,height/2 - out * height/2);
ellipse(0,0,10,10);
}
Merci. Cela fonctionne avec un peu de peaufinage! – Icy4614