"Apresentar o desenvolvimento de uma aplicação que,
empregando laços, gere quadros com uma função que
replica um bloco formado por um quadrado e três
círculos coloridos. A aplicação deve receber a quantidade
de blocos por linha e coluna por duas variáveis globais"
![]() |
Farbstudie Quadrate, 1913 by Wassily Kandinsky
|
Temos acima o modelo natural de um quadro de Kandinsky, pintado com a intenção de fazer um estudo de harmonia de cores. Vamos tentar produzir uma cópia deste quadro utilizando Processing!
![]() |
O modo de receber os valores das variáveis é diretamente pelo código, mas em Processing com Python, poderia receber, de maneira simples, entradas pelo teclado. |
Como foi pedido, a quantidade de linhas e colunas são recebidas como variáveis globais (linha, coluna). Também adicionei a opção de receber o tamanho do lado de cada quadrado (lado) e a quantidade de círculos dentro de cada quadro (circ). Dentro do setup é definido o tamanho da janela, para logo em seguida termos nosso primeiro procedimento, pintaTela().
pintaTela() será nosso procedimento destinado a controlar o que será desenhado na tela. Fiz uso de dois for aninhados, que são responsáveis por indicar a posição de cada quadro em uma espécie de matriz, como mostrado no desenho abaixo, e indicar onde eles devem ser pintados, usando pintaQuadro(). O centro de cada quadro será na metade do lado de cada um deles.
Este procedimento recebe como parâmetros o ponto central do quadro, que será usado na geração de um quadrado, com pintaQuadrado, e na geração de círculos, com pintaCirculo. A variável diametro é usada para definir o tamanho do círculo, onde o diâmetro do primeiro é sempre igual ao lado do quadrado do quadro, com os círculos seguinte sendo sempre menores que o anteriores, se utilizando de um valor gerado aleatoriamente, em função do lado e do número de círculos, para reduzir seu tamanho.
Aqui não há mistério, a cor interna do quadrado e do círculo são geradas aleatoriamente, o tamanho do quadrado está em função da variável lado e o do círculo da variável diametro, passada anteriormente como parâmetro e usada como D no procedimento.
Abaixo temos dois resultados com dois conjuntos de entradas diferentes.
O primeiro resultado foi baseado no que foi pedido pelos professores. É possível notar a grande variação de tamanho dos círculos e a alta variedade de cores. Um olho bem treinado conseguiria facilmente perceber relações complementares e até tríades em meio a esses quadros.
Me apaixonei profundamente por esse resultado pela aparência parecida com a de um vinil. A grande quantidade de círculos acabou gerando esse resultado.
Espero que tenha sido uma leitura e um aprendizado agradável, abaixo segue o link para download do código fonte.
Código em Processing: Tarefa 2
![]() |
Decidi produzir um código bastante modularizado. Este procedimento chama uma função, que também chamará outras duas funções, como veremos a frente. |
![]() |
Matriz de quadros, j controla a entrada em colunas e i controla a entrada em linhas. |
![]() |
Como falado anteriormente, a função pinta quadros chama outras duas funções, sendo estas responsáveis pela AÇÃO da pintura em tela realmente. |
![]() |
Esse procedimento pode até parecer inútil, mas a modularização do código tem a vantagem de tornar sua compreensão e sua leitura mais fáceis, além de garantir um reuso do nosso código. |
Abaixo temos dois resultados com dois conjuntos de entradas diferentes.
![]() |
Variáveis Globais: coluna = 5; linha = 3; circ = 3; lado = 100. Tamanho da tela é (800,800). |
O primeiro resultado foi baseado no que foi pedido pelos professores. É possível notar a grande variação de tamanho dos círculos e a alta variedade de cores. Um olho bem treinado conseguiria facilmente perceber relações complementares e até tríades em meio a esses quadros.
![]() |
Variáveis Globais: linha e coluna = 1; circ = 1000; lado = 800. Tamanho da tela é (800,800). |
Espero que tenha sido uma leitura e um aprendizado agradável, abaixo segue o link para download do código fonte.
Código em Processing: Tarefa 2
Nenhum comentário:
Postar um comentário