Tarefa da aula 07: Yin-Yang
Objetivo:
Implementar um código que desenhe um Yin-Yang dentro do outro.
Primeiro vamos revisar o Yin-Yang visto em aula. Ele é feito basicamente com elipses e arcos posicionados, partindo do centro da figura, a uma fração do próprio módulo do desenho.
Note que o desenho é feito dentro da uma função desenhaYinYang(), que recebe apenas as posições X e Y de onde o desenho deve ser feito o o tamanho do seu módulo, que eu chamei de t. No meu caso, na chamada da função dentro do void draw() eu atribuí à t a variável mod que será o meu módulo, e as posições x e y serão as mesas do meu mouse. O resultado é este:
Agora a ideia é criar uma nova função, yinYang(), que desenhe o Yin-Yang recursivamente, ou seja, a função deve desenhar a figura de novo e de novo, repetidamente. Obviamente que se isso acontecer literalmente assim, o Processing vai travar e não vai executar o código, então eu coloquei como condição para que a função execute que o próprio valor de t deve ser maior que 1.
Se isso acontecer, além de chama a função desenhaYinYang(), u função yinYang() vai chamar a si mesma mais duas vezes, mas agora com a posição y e tamanho do módulo fracionados de modo que coincidam com os círculos menores do desenho feito pela função desenhaYinYang().
O "pulo do gato" aqui é que a variável t usada nessas novas chamadas da função yinYang() é usada de modo fracionado (t/8), logo, o novo desenho feito já vai usar esse valor dentro de si, fracionando-o novamente para a próxima chamada yinYang(), diminuindo o tamanho da figura e mudando sua posição cada vez mais até que t seja menor que 1, que é a condição da nossa função yinYang(). Assim, temos um Yin-Yang recursivo, como mostrado na figura acima.





Comentários
Postar um comentário