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:
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
Postar um comentário