如何连续递增后递减?
How to make an increment followed by a decrement continuously?
我正在尝试获得一个从 0 上升到 n,然后从 n-1 下降到 0 的增量,并一遍又一遍地重复循环。
在这个用 Processing 编写的示例中,我希望背景从黑色 (i=0) 逐渐变为白色 (i=255),然后逐渐从白色变为黑色,依此类推。现在我只能让它从黑变白,然后突然又变黑了。
int i = 0;
void setup(){
size(640, 360);
frameRate(60);
}
void draw(){
background(i);
i++;
if(i==256){i=0;}
}
尝试-
int change = 1;
void draw(){
background(i);
i = i + change;
if(i==256){change = -1;}
if(i==0){change = 1;}
}
看待这个问题的另一种方式是:"How could I draw a triangle wave?"。
我喜欢这种方式,因为它不需要 "ifs"。像这样的东西就可以了。
triangleWave = maxNumber - abs(incrementedVar % (2*maxNumber) - maxNumber);
Coll,不是吗?
我有使用这个的旧代码,它不是绘制波浪,而是使用它来调整大小和填充颜色。还有一个正弦波用于比较。看看:
float zigZag, toIncrement, speed =1, maxNumber = 255;
float sine, x = 270, speed2 = 1;
void setup() {
size(800, 400);
background(255);
}
void draw() {
background(255);
//triangle wave
toIncrement+=speed;
zigZag = maxNumber - abs(toIncrement % (2*maxNumber) - maxNumber);
fill(zigZag);
noStroke();
ellipse( 150, height/2+100, 50, 50);
strokeWeight(zigZag);
stroke(0);
line(100, height/2-100, 200, height/2-100);
text("triangle = " + int(zigZag), 100, height-30);
println("triangle wave value = " + zigZag);
//sine wave
x+=speed2;
sine = (1+sin(radians(x)))*(maxNumber/2);
fill(sine);
noStroke();
ellipse( 650, height/2+100, 50, 50);
strokeWeight(sine);
stroke(0);
line(600, height/2-100, 700, height/2-100);
fill(80);
text("sine = " + int(sine), 600, height-30);
}
我正在尝试获得一个从 0 上升到 n,然后从 n-1 下降到 0 的增量,并一遍又一遍地重复循环。
在这个用 Processing 编写的示例中,我希望背景从黑色 (i=0) 逐渐变为白色 (i=255),然后逐渐从白色变为黑色,依此类推。现在我只能让它从黑变白,然后突然又变黑了。
int i = 0;
void setup(){
size(640, 360);
frameRate(60);
}
void draw(){
background(i);
i++;
if(i==256){i=0;}
}
尝试-
int change = 1;
void draw(){
background(i);
i = i + change;
if(i==256){change = -1;}
if(i==0){change = 1;}
}
看待这个问题的另一种方式是:"How could I draw a triangle wave?"。 我喜欢这种方式,因为它不需要 "ifs"。像这样的东西就可以了。
triangleWave = maxNumber - abs(incrementedVar % (2*maxNumber) - maxNumber);
Coll,不是吗?
我有使用这个的旧代码,它不是绘制波浪,而是使用它来调整大小和填充颜色。还有一个正弦波用于比较。看看:
float zigZag, toIncrement, speed =1, maxNumber = 255;
float sine, x = 270, speed2 = 1;
void setup() {
size(800, 400);
background(255);
}
void draw() {
background(255);
//triangle wave
toIncrement+=speed;
zigZag = maxNumber - abs(toIncrement % (2*maxNumber) - maxNumber);
fill(zigZag);
noStroke();
ellipse( 150, height/2+100, 50, 50);
strokeWeight(zigZag);
stroke(0);
line(100, height/2-100, 200, height/2-100);
text("triangle = " + int(zigZag), 100, height-30);
println("triangle wave value = " + zigZag);
//sine wave
x+=speed2;
sine = (1+sin(radians(x)))*(maxNumber/2);
fill(sine);
noStroke();
ellipse( 650, height/2+100, 50, 50);
strokeWeight(sine);
stroke(0);
line(600, height/2-100, 700, height/2-100);
fill(80);
text("sine = " + int(sine), 600, height-30);
}