如果你特别想使用正弦波作为输入,而不是锯齿波,那么你需要你的输入(例如,时间)映射到某个色彩范围。例如:
- 从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