void setup() {
size(500, 350);
strokeWeight(2);
colorMode(HSB);
}
float a = 0;
void draw() {
// Gradientezinho
for (float n = 0; n <= height; n++) {
stroke(170, 255, map(n, 0, height, 50, 255));
line(0, n, width, n);
}
noStroke();
// Posição Y do barquinho, é a mesma função da formação de onda pro ponto central
float y = sin(radians(width/2+frameCount)*3)*10+height/3*2;
// O ângulo de inclinação do barquinho (Thanks Davi)
a = asin(cos(radians(width/2+frameCount)*3))/3;
// Desenha o barquinho
fill(255);
beginShape();
vertex(width/2+cos(PI+a)*20, y+sin(PI+a)*20);
vertex(width/2+cos(a)*20, y+sin(a)*20);
vertex(width/2+cos(PI*1.5+a)*25, y+sin(PI*1.5+a)*25);
endShape();
fill(127);
beginShape();
vertex(width/2+cos(PI+a)*20, y+sin(PI+a)*20);
vertex(width/2+cos(PI/8*9+a)*30, y+sin(PI/8*9+a)*30);
vertex(width/2+cos(PI/8*15+a)*30, y+sin(PI/8*15+a)*30);
vertex(width/2+cos(a)*20, y+sin(a)*20);
endShape();
// Forma as ondas
stroke(160, 255, 127);
for (int x = 0; x <= width; x++) {
y = sin(radians(x+frameCount)*3)*10+height/3*2;
line(x, height, x, y);
}
}
Valeu Davi!
Nenhum comentário:
Postar um comentário
Pode falar, eu não mordo... Pelo menos não através da internet