float T_STEP_SIZE = PI / 128.0;
float t = 0.0;
void setup(){
size(500, 250);
noStroke();
frameRate(30);
}
void draw(){
background(255);
fill(0, 128 + getTriangleWave(t) * 128);
rect(0, 0, width / 2.0, height);
fill(0, 128 + sin(t) * 128);
rect(width / 2.0, 0, width / 2.0, height);
t += T_STEP_SIZE;
}
float getTriangleWave(float x){
float y = x % (2.0 * PI);
float z = y % (PI / 2.0);
if(0 <= y && y < PI / 2.0){
return z / (PI / 2.0);
} else if(PI / 2.0 <= y && y < PI) {
return ((PI / 2.0) - z) / (PI / 2.0);
} else if(PI <= y && y < 1.5 * PI){
return -1.0 * z / (PI / 2.0);
} else {
return -1.0 * ((PI / 2.0) - z) / (PI / 2.0);
}
}