segunda-feira, 23 de novembro de 2015

Bolas que se colorem com a seta do mouse

Dentre as atividades que foram passadas para serem feitas em casa e postadas aqui neste blog, foi pedido que fizéssemos um programa no Processing que produzisse em locais aleatórios duas circunferências, também com raios aleatórios.

Quando a seta do mouse passasse sobre elas, estas circunferências devem mudar de cor e quando a seta do mouse sair de cima delas, elas devem deixar de ter essa cor.

Para facilitar meu trabalho, reaproveitei o código de uma outra atividade feita em sala que calcula a distância entre dois pontos, apenas adicionando novas variáveis que tem seu valor gerado randomicamente a cada vez que o programa é aberto e chamando as funções apenas para mudar a cor das circunferências dentro da condição estabelecida (mouse dentro da circunferência). Segue o código explicado através de comentários abaixo.

 float xBola1;
float yBola1;
float xBola2;
float yBola2;
float raio1;
float raio2;

//cálculo da distância entre dois pontos na mesma linha
float distancia1D(float X1, float X2){
  float resposta;
  resposta = X2 - X1;
  return sqrt(pow(resposta, 2));
 
}

//cálculo da distância entre dois pontos em qualquer lugar na tela
float distancia2D(float x1, float y1, float x2, float y2){
 
  float coordenadaX;
  coordenadaX = distancia1D(x2, x1);
  float coordenadaY;
  coordenadaY = distancia1D(y2, y1);
 
  float distancia = round(sqrt(pow(coordenadaX, 2) + pow(coordenadaY, 2)));
  return distancia;
   
 
}

void setup(){
 size(600, 600);
 //determinar de forma aleatória a localização e o raio das circunferências
 xBola1 = round(random(width));
 yBola1 = round(random(height));
 xBola2 = round(random(width));
 yBola2 = round(random(height));

 raio1 = round(random(20, 80));
 raio2 = round(random(20, 80));


}

void draw(){
  background(0);
  //colocamos a condicional para colorir a bola caso o mouse entre nela

 if(distancia2D(mouseX, mouseY, xBola1, yBola1) <= raio1){
     fill(125);
 }
 //fazemos a primeira ellipse dando como parâmetros sua localização e o raio gerado

 ellipse(xBola1, yBola1, raio1*2, raio1*2);
 //ao afastar a seta do mouse, volta a ficar branca
 fill(255);
 //faz o mesmo com a outra circunferencia
  if(distancia2D(mouseX, mouseY, xBola2, yBola2) <=raio2){
    fill(0, 123, 200);
  }
    ellipse(xBola2, yBola2, raio2*2, raio2*2);
    fill(255);
 
 
}


Nenhum comentário:

Postar um comentário