Exercício 7 - "A" da Braun

              Neste exercício será preciso fazer o “A" da Braun continuamente aumentar e diminuir de tamanho no centro da tela com suas proporções corretas.
Vamos utilizar a imagem abaixo como referência para fazer o A, então:

  •      a Altura será 8 módulos;
  •      a largura será 3,3 módulos;
  •    o centro branco será 1,3 módulo;
  •    os círculos maiores para formar a parte arredondada terão o raio de 1 módulo;
  •        os círculos menores terão o raio de 1/4 de um módulo;
 
               Primeiramente criei uma função que recebe como parâmetro a altura, junto com o valor do módulo e largura. Para facilitar o cálculo, também criei uma variável a que utiliza apenas 7 módulos de altura(não irá influenciar a altura original):

void mostraA(float Altura){
  m=Altura/8;
  a=Altura-m;
  l=3.3*m;
}

           Para começar a fazer de fato o "A" criei um retângulo grande central que tem como altura a , um retângulo menor em cima e os arcos maiores para deixar a borda arredondada:

 rect(width/2-l/2 , height/2-a/2 , l , a); 
 rect(width/2-1.3*m/2 ,height/2-4.5*m  , 1.3*m ,m);
 arc(width/2-l/2+m,height/2-a/2,m*2,m*2,PI/2,PI*2,PIE); 
 arc(width/2+l/2-m,height/2-a/2,m*2,m*2,PI,PI*2.5,PIE); 
Stroke ativado e cores cinzas para melhor entendimento*
   

         Agora para a parte interna, criei um retângulo menor na parte superior, em seguida dois círculos menores para as bordas internas e mais dois retângulos auxiliares para o preenchimento interno:
   rect(width/2-1.3*m/2 , height/2-a/2+m , 1.3*m ,2.5*m);  
  rect(width/2-1.3*m/2 , height/2+m , 1.3*m ,2.5*m);
  ellipse(width/2-l/2+m+m/4, height/2-a/2+m/4 , m/2, m/2 ); 
  ellipse(width/2-l/2+2.3*m-m/4 , height/2-a/2+m/4 , m/2 , m/2);  
  rect(width/2-1.3*m/2 , height/2-3*m-m/4 , 1.3*m , m); 
  rect(width/2-1.3*m/2+m/4 , height/2-3*m-m/4*2 , 1.3*m-m/4*2 , m);

Stroke ativado e cores cinzas para melhor entendimento*

 
        Feito o "A", agora falta o efeito de aumentar e diminuir, para isso criei uma função:

 void aumentaDiminui(){
  if (aumentar<height){
    mostraA(aumentar);
    aumentar+=10;
  }else if(diminuir>0){
    mostraA(diminuir);
    diminuir-=10;
  }else if((aumentar>=height)&&(diminuir<=0)){
    aumentar=0;
    diminuir=height;
  }
}  

            Criei mais duas variáveis(aumentar e diminuir) , a função afirma que, se aumentar for menor que a altura da tela, acrescente 10 em seu tamanho, se não, se diminuir for maior do que 0, decrescente 10  em seu tamanho  ou se aumentar for maior ou igual a tela e diminuir for menor ou igual a 0, resete para os valores iniciais para ocorrer o loop.

           Segue abaixo como ficou o código completo:

float x;
float y=600;
float m;
float l;

void setup() {
  size(600, 600);
  noStroke();
}
void mostraA(float a) {

  m=a/7;
  l=3.3*m;

  fill(0);

  rect(width/2-l/2, height/2-a/2, l, a);// retangulo preto maior do "A"
  rect(width/2-1.3*m/2, height/2-4.5*m, 1.3*m, m); //retangulo preto de cima
  arc(width/2-l/2+m, height/2-a/2, m*2, m*2, PI/2, PI*2, PIE); //arco superior esquerdo
  arc(width/2+l/2-m, height/2-a/2, m*2, m*2, PI, PI*2.5, PIE); //arco superior direito

  fill(255);

  rect(width/2-1.3*m/2, height/2-a/2+m, 1.3*m, 2.5*m); //retangulo branco menor de cima
  rect(width/2-1.3*m/2, height/2+m, 1.3*m, 2.5*m); //retangulo branco menor de baixo
  arc(width/2-l/2+m+m/4, height/2-a/2+m/4, m/2, m/2, 0, PI*2, PIE); //arco branco inferior esquerdo
  arc(width/2-l/2+2.3*m-m/4, height/2-a/2+m/4, m/2, m/2, 0, PI*2, PIE); //arco branco inferior direito
  rect(width/2-1.3*m/2, height/2-3*m-m/4, 1.3*m, m);
  rect(width/2-1.3*m/2+m/4, height/2-3*m-m/4*2, 1.3*m-m/4*2, m);
}
void aumentaDiminui() {
  if (x<height) {
    mostraA(x);
    x+=10;
  } else if (y>0) {
    mostraA(y);
    y-=10;
  } else if ((x>=600)&&(y<=0)) {
    x=0;
    y=600;
  }
}  

void draw() {
  background(255);
  aumentaDiminui();
}





         
 

Comentários

Postagens mais visitadas deste blog

Exercício 6 - Bandeira do Brasil

Exercício 10 - Jogo do Pong

Execício 8 - Sensor de distância