Mantendo-se sempre uma mesma velocidade de deslocamento, criar uma aplicação que move um círculo, inicialmente no centro da tela, para qualquer posição clicada pelo mouse.
Primeiro defini a velocidade fixa de 150, e posicionei a bola no central da tela (metade da altura e metade da largura). Criei um estado clique para verificar se é verdadeiro ou falso. Dentro da função mouseClicked() caso o clique o estado é ativado, quando é solto o clique fica falso e armazeno em variáveis as posições x e y através da função "pmouseX" e "pmouseY".
Quando clique é ativado a bola fica da cor do fundo (ou seja desaparece) e chamamos a função movimento. Essa função a nova bola vai aparecer em branco e vai ativar o movimento dela até o local do clique. Nela colocamos como parâmetro a posição atual da bola, a posição do clique, e a velocidade fixa. É criada uma variável auxiliar para controlar o movimento de acordo com a velocidade, i é inicializado em 0 e pode ir até 1, enquanto i for menor que zero i será: i=i+(1.0/velocidade); É só colocar esse i multiplicando a diferença do x e y final (clique) e o x e y inicial (centro). O código fica assim:
int x1;
int x2;
float i=0;
boolean clique=false;
int velocidade=150;
void setup ()
{
size(600,600);
}
void draw ()
{
background(0);
ellipse(300,300,30,30);
if (clique==true)
{
background(0);
movimento(300,300,x1,x2,velocidade);
}
}
void mouseClicked() {
if(clique == false) {
x1 = pmouseX;
x2 = pmouseY;
}
clique = true;
}
void movimento(int x, int y, int a, int b, int v)
{
fill(255);
ellipse(x+i*(a-x),y+i*(b-y),30,30);
if(i<=1)
{
i=i+(1.0/v);
}
}
Primeiro defini a velocidade fixa de 150, e posicionei a bola no central da tela (metade da altura e metade da largura). Criei um estado clique para verificar se é verdadeiro ou falso. Dentro da função mouseClicked() caso o clique o estado é ativado, quando é solto o clique fica falso e armazeno em variáveis as posições x e y através da função "pmouseX" e "pmouseY".
Quando clique é ativado a bola fica da cor do fundo (ou seja desaparece) e chamamos a função movimento. Essa função a nova bola vai aparecer em branco e vai ativar o movimento dela até o local do clique. Nela colocamos como parâmetro a posição atual da bola, a posição do clique, e a velocidade fixa. É criada uma variável auxiliar para controlar o movimento de acordo com a velocidade, i é inicializado em 0 e pode ir até 1, enquanto i for menor que zero i será: i=i+(1.0/velocidade); É só colocar esse i multiplicando a diferença do x e y final (clique) e o x e y inicial (centro). O código fica assim:
int x1;
int x2;
float i=0;
boolean clique=false;
int velocidade=150;
void setup ()
{
size(600,600);
}
void draw ()
{
background(0);
ellipse(300,300,30,30);
if (clique==true)
{
background(0);
movimento(300,300,x1,x2,velocidade);
}
}
void mouseClicked() {
if(clique == false) {
x1 = pmouseX;
x2 = pmouseY;
}
clique = true;
}
void movimento(int x, int y, int a, int b, int v)
{
fill(255);
ellipse(x+i*(a-x),y+i*(b-y),30,30);
if(i<=1)
{
i=i+(1.0/v);
}
}
