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

Postagens mais visitadas deste blog

Tarefa da aula 09: Pong para um jogador - keyPressed e keyPressed()

Trabalho pt.1: Porte de um jogo clássico

Tarefa da aula 12: Jogo simples com MEFs