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