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:


Nenhum comentário:
Postar um comentário