- Criar um olho (círculo preto pequeno no interior de círculo branco grande) que se encontra sempre voltado para o cursor do mouse.
código:
Essa tarefa não teve muita diferença do que foi visto em sala, em fazer uma linha girar partindo do centro da tela, a diferença é que agora a linha será uma ellipse que precisa estar dentro de outra ellipse, então será necessário utilizar distância entre dois pontos para que a ellipse interna não ultrapasse a ellipse externa.
então são necessárias algumas comparações pra saber que valor a tangente inversa vai receber.
if (mouseX !=0) {
dx = mouseX - 400 ;
dy = mouseY - 300 ;
tg = dy/dx;
}
a = atan(tg);
se a posição do mouse em x for menor que o centro da ellipse, a variável a recebe o valor de PI incrementado de a.
if (mouseX<400) {
a += PI;
}
se a posição do mouse em x e em y for maior que o centro da ellipse e menor que o centro da ellipse em y, a variável recebe o valor de PI*2 incrementando de a.
if (mouseX>400 && mouseY<300) {
a += TWO_PI;
}
depois estabelece-se os valores de X e Y, usando as funções cos e sin.
X=cos(a)*(raio - 70);
Y=sin(a)*(raio - 70);
a variável dist, recebe os valores da função distancia, que é a função para achar a distância entre dois pontos. No caso, a distância entre o centro da ellipse maior e do mouse, assim, um novo círculo será sempre criado de acordo com a posição do mouse.
dist =distancia(400, mouseX, 300, mouseY);
fill(0);
if (dist>=(raio-70)) {
ellipse(400+X, 300+Y, 100, 100);
} else {
ellipse(mouseX, mouseY, 100, 100);
}
}
int distancia(float X1, float X2, float Y1, float Y2) {
int resposta;
resposta = (int)sqrt(((X1-X2)*(X1-X2)) + ((Y1-Y2)*(Y1-Y2)));
return resposta;
}
Resultado: