Para fazer as ondas, fiz uma funcao chamada senoide() com os seguintes atributos:
y = A posição Y das ondas;
amp = A altura das ondas;
fase = Algo para controlar o defasamento das ondas (deslocar a onda no eixo X).
Ela é feita de lines e percorrem toda a largura da tela.
Criei um barco a partir de um quad(), so que fiz uma função que o desenhe em uma posição X,Y qualquer.
Para o barco navegar pelas ondas, devo controlar a posicao Y, seguindo a funcao da senoide.
A frequência em que o meu barco sobe e desce deve ser a velocidade do defasamento das ondas.
A onda e o barco devem ter mesma amplitude.
Código:
y = A posição Y das ondas;
amp = A altura das ondas;
fase = Algo para controlar o defasamento das ondas (deslocar a onda no eixo X).
Ela é feita de lines e percorrem toda a largura da tela.
Criei um barco a partir de um quad(), so que fiz uma função que o desenhe em uma posição X,Y qualquer.
Para o barco navegar pelas ondas, devo controlar a posicao Y, seguindo a funcao da senoide.
A frequência em que o meu barco sobe e desce deve ser a velocidade do defasamento das ondas.
A onda e o barco devem ter mesma amplitude.
Código:
void setup(){ size(800,600); } int f = 0; void draw(){ background(#141432); stroke(#0000bb); rect(0,3*height/4,width,3*height/4); fill(255); senoide(3*height/8,20,f); desenhaBarco(352,221+20*sin(radians(f))); f++; } void senoide(int y,int amp,float fase) { float pos; for(int x = 0;x<width;x++) { pos = amp*sin(radians(x+fase)); line(x,y+pos,x,height); } } void desenhaBarco(float x, float y) { quad(x-35,y-10, x+35,y-10, x+20,y+10, x-20,y+10); }
Comentários
Postar um comentário