Execício 8 - Sensor de distância

               O objetivo desse exercício é criar  uma aplicação que muda individualmente a cor do preenchimento de dois círculos, com raios e centros randômicos, sempre que o cursor do mouse passar sobre os mesmos.
               Primeiramente começo com a função distancia1D que calcula a distância entre dois pontos:

 int distancia1D(int X1, int X2){
   int resposta;
   int aux;
   aux = X2 - X1;
   resposta = int(sqrt(aux * aux));
   return resposta;
 }

        
       Depois criei uma função para encontrar o centro de um circulo:

 int distanciaO_bola(float X, float Y){ //função para encontrar o centro da bola
  
  int dV = distancia1D(int(Y), mouseY); //distancia entre Y da bola e o mouse X
  int dH = distancia1D(int(X), mouseX); //distancia entre o X da bola e o mouse Y
  int d0 = int(sqrt(dV*dV + dH*dH)); // distancia entre o centro da bola e o mouse X e mouse Y
  
  return d0;
}

    
       Após isto, criei outra função para criar o desenho em si das bolas :  

void mostrarBolas(int D0_Bolas,int X_Bolas,int Y_Bolas,int R_Bolas,int Cor_Bolas){ // mostrar as bolas na tela
  
  if (D0_Bolas<R_Bolas){ // se a distancia entre o centro do circulo e o mouse for menor o raio, a cor muda.
  fill(0,Cor_Bolas,255);
}
  ellipse(X_Bolas,Y_Bolas,R_Bolas*2,R_Bolas*2); // criar a ellipse com posição e raio randomico
  fill(255,Cor_Bolas,0);
  } 


      Por fim, falta apenas chamar as funções com os parâmetros correspondentes. O código final fica assim:
//por necessitar de posições e raios aleatórios, todas as variáveis são randomicas
float bolaX1= random(400);
float bolaY1= random(400);
float bolaX2= random(400);
float bolaY2= random(400);
float r1 = random(100);
float r2 = random(100);
int dV;
int dH;
int distancia1D(int X1, int X2){ //função para encontrar a distancia entre 2 pontos
  int resposta;
  int aux;
  aux = X2 - X1;
  resposta = int(sqrt(aux * aux));
  return resposta;
}

int distanciaO_bola(float X, float Y){ //função para encontrar o centro da bola
  
  int dV = distancia1D(int(Y), mouseY); //distancia entre Y da bola e o mouse X
  int dH = distancia1D(int(X), mouseX); //distancia entre o X da bola e o mouse Y
  int d0 = int(sqrt(dV*dV + dH*dH)); // distancia entre o centro da bola e o mouse X e mouse Y
  
  return d0;
}

void mostrarBolas(int D0_Bolas,int X_Bolas,int Y_Bolas,int R_Bolas,int Cor_Bolas){ // mostrar as bolas na tela
  
  if (D0_Bolas<R_Bolas){ // se a distancia entre o centro do circulo e o mouse for menor o raio, a cor muda.
  fill(0,Cor_Bolas,255);
}
  ellipse(X_Bolas,Y_Bolas,R_Bolas*2,R_Bolas*2); // criar a ellipse com posição e raio randomico
  fill(255,Cor_Bolas,0);
  } 
  
void setup(){
  size (400, 400);
  
}

void draw(){
  background(180);
  mostrarBolas(distanciaO_bola(bolaX1,bolaY1),int(bolaX1),int(bolaY1),int(r1),255);
  mostrarBolas(distanciaO_bola(bolaX2,bolaY2),int(bolaX2),int(bolaY2),int(r2),0);
  // linhas guias
  line(bolaX1,bolaY1,mouseX,mouseY); 
  line(bolaX2,bolaY2,mouseX,mouseY); 
  
  textSize(20);
  text(distanciaO_bola(bolaX1,bolaY1), 10, 30);
  text(distanciaO_bola(bolaX2,bolaY2), 10, 60);

}













Comentários

Postagens mais visitadas deste blog

Exercício 6 - Bandeira do Brasil

Exercício 10 - Jogo do Pong