如果你特別想使用正弦波作爲輸入,而不是鋸齒波,那麼你需要你的輸入(例如,時間)映射到某個色彩範圍。例如:
- 從0每2000毫秒值增加到2.0
- 值範圍從-1到1
- SIN(值)的輸出範圍從-1到1
- 地圖輸出到一個顏色範圍。
行之有效的映射值,但你也可以使用colorMode()映射的顏色範圍 - 因此而不是四處移動你的正弦輸出值,只是讓你的輸出0-2.0並設置最大RGB或HSB值到2.0,而不是255
這裏有一些例子,都在同一個草圖同時運行:
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);
}
謝謝。它適用於一些調整! – Icy4614