sábado, 30 de setembro de 2017

MAMI, Exercício 9 - Breakout

      Nesse exercício, foi feito um pequeno modelo do famoso game "Breakout" da época do Atari.

      Esse game consiste em basicamente acertar os retângulos na tela usando uma bola e evitar que ela caia para baixo do bastão que fica na parte inferior da tela.

      Para isso acontecer, uma colisão tem que ocorrer, e utilizar o a técnica "bounding Box" é interessante, pois haverá uma caixa delimitadora que fará uma ação ao ser encostada, algo que funcionou bem de fato, pois a maioria dos objetos na tela são retangulares e empregar o boundingBox foi super viável. No caso do meu exemplo; quando a bola atingisse a delimitação da minha caixa, o meu retângulo recebe valores nulos, logo, é apagado do game e soma pontos ao jogador.Vence quem destruir todos os retângulos e perde quem deixar a bola cair pra baixo do bastão ao pé da tela.

Exemplo1- Perdendo: 







































Exemplo2- Ganhando: 





































quinta-feira, 28 de setembro de 2017

MAMI, Exercício 8 - Interpolação

       Neste exercício, criei um movimento interpolado de um quadrado de lado 10 pixels através da função moverCaixa(), que recebem como parâmetro o X e Y iniciais, e X e Y finais e o número de passos.
       Sabendo disso declarei uma variável para a Distancia X e para a Distancia Y , onde o calculo é feito basicamente por Pixel final menos o inicial. O numero de passos será a repetição da imagem a cada frame, no caso de 60 fps em 1 segundo temos 60 frames, então 60 passos é igual a 1 segundo, 120 é 2 segundos e por ai vai.

O resultado foi o seguinte:



Interpolação 1D com posição Y fixa.

 Interpolação 2D


domingo, 24 de setembro de 2017

MAMI, Exercício 7 - Marca

         Nem todas as pessoas sabem, mas, cada marca e seu logotipo tem um Design, e esse Design vai além de beleza estética, ele também é uma ferramenta visual que vai definir grande parte dos padrões do produto final, e para isso, grande estudo é realizado e muitos cálculos são feitos para que o logotipo de uma empresa, seja adptiva e responsiva.

        Darei um breve exemplo da empresa Apple:

Co-fundada por Steve Jobs, a Apple criou o iPod, iTunes, iPhone, iPad e outros produtos.


A matemática por trás do logo da Apple

A Matemática por trás do logotipo:
Algumas circunferências de raios variados e um pouco de proporção áurea ou número de ouro, o logotipo da Apple ganha perfeição. A proporção áurea é identificada pela letra grega φ (phi). Ela vale aproximadamente 1,618. Observando a imagem acima é possível notar essas propriedades.

O número de ouro ganhou um status de "quase mágico", sendo alvo de pesquisadores, artistas e escritores. O fato de ser encontrado através de desenvolvimento matemático é que o torna fascinante.


Como podemos ver a proporção e o Design do logotipo impacta no produto final como o exemplo abaixo:



iphone razão de ouro


Mais detalhes :
Referências: 
http://www.prof-edigleyalexandre.com/2013/09/a-matematica-por-tras-dos-logotipos-de-grandes-empresas.html
http://www.prof-edigleyalexandre.com/2011/07/proporcao-aurea-sequencia-de-fibonacci.html








sexta-feira, 22 de setembro de 2017

MAMI, Exercício 6 - Bandeira

Efetuei no Processing a reprodução da bandeira do Brasil, com base nos cálculos abaixo :

 DE ACORDO COM A LEI FEDERAL 5700, S. II, A. 5 - 01/09/1971

I - PARA CÁLCULO DAS DIMENSÕES, TOMAR-SE-Á POR BASE A ALTURA DESEJADA, DIVIDINDO-SE ESTA EM 14 PARTES IGUAIS. CADA UMA DAS PARTES SERÁ CONSIDERADA UMA MEDIDA OU MÓDULO

II - O LARGURA TOTAL SERÁ DE 20 MÓDULOS

III - A DISTÂNCIA DOS VÉRTICES DO LOSANGO AO QUADRO EXTERNO SERÁ DE UM MÓDULO E SETE DÉCIMOS

IV - O CÍRCULO NO MEIO DO LOSANGO TERÁ O RAIO DE TRÊS MÓDULOS E MEIO


Tendo isso em mente é só fazer a lógica ; um Módulo é igual a Largura dividida por 20 (m = L/20)e a Altura é 14 vezes o modulo (a=14*m).

O retângulo da bandeira terá as configurações x e y a critério do programador, eu optei por ser no centro então X e Y receberam respectivamente a metade da Largura e a metade da Altura.

O losango da bandeira recebeu em suas pontas  a subtração da metade da largura mais um módulo e sete décimos (x-L/2+1.7*m) em outra ponta o mesmo com a altura foi aplicado(y-a/2+1.7*m) e nas outras a soma da metade da largura mais um módulo e sete décimos ( x+l/2-1.7*m) e na altura ( y+a/2-1.7*m), pois são as distancias entras pontas e os lados do retângulo.

O circulo foi aplicado os parâmetros x e y e os diâmetros foram duas vezes o raio que era de três módulos e meio (x, y, 2*3.5*m,2*3.5*m).

Por fim para um maior auxilo o uso das funções rectMode() e ellipseMode() servem para mudar a zona de iniciação e atuação do Retângulo e da Elipse , onde o no Retângulo o Eixo é em sua extremidade superior esquerda e o da Elipse é em seu centro. Ao usar o rectMode() e mudar sua zona de eixos para o centro, simplificará muito a aplicação da lógica pois os eixos e parâmetros de X e Y poderão ser os mesmo da Elipse, já que ambas iniciarão no centro.

Exemplo:














MAMI, Exercício 5 - Lançamento



      Desenvolvi uma aplicação que simula o lançamento oblíquo. Para isso foi necessário atribuir a movimentação de um MRU(Movimento Retilíneo Uniforme) ao eixo X da Elipse e a movimentação de um MRUV(Movimento Retilíneo Uniformemente Variado) ao eixo Y, onde pede força da aceleração ao subir e volta a ganhar ao descer; fiz isso fazendo com que na subida a bola sofresse o movimento retardado onde a aceleração diminui e isso tem impacto na velocidade, fazendo com que em algum momento ela pare de subir. Sempre que a bola tocar ao chão, sua aceleração e consequentemente velocidade irão diminuir, fazendo com que o próximo movimento que da impressão de "quicar" seja menor, mais lento e mais fraco tanto para o eixo X quando para o eixo Y.
      Para ser realizada a reprodução do quicar, foram necessárias variáveis auxiliares de aceleração e de tempo, pois o tempo precisava ser reiniciado ou zerado a cada vez que a bola quicava e o auxiliar da aceleração receber a aceleração dividida após o contato com o chão .
      Utilizei a função lancamento() que recebe como parâmetro a velocidade X(horizontal), velocidade Y (vertical), aceleração, tempo, e o tempo relativo ao quicar. Um vetor auxiliar com 2 casas receberá na primeira casa a marcação do espaço X e na segunda casa a do espaço Y em pixels( sendo esse subtraindo o valor do tamanho da tela menos o raio da bola), quando chamado, essa função ira retornar os pixels X e Y na tela, como podem ver abaixo. 
     
     


segunda-feira, 11 de setembro de 2017

MAMI, Exercício 4 - MRU



Neste exercício, foi dada a tarefa de fazer 20 carros (retângulos coloridos), com velocidades aleatórias. Para isso criei um vetor/array "vRCarros" que receberia a velocidade randômica de carros e dentro do array você coloca a quantidade de carros que quer ter em seu programa e cada um receberá uma velocidade aleatória.

Foi criada a função dada em sala MRU, movimento retilíneo uniforme, onde recebe como parâmetro a velocidade e o tempo, e retorna o deslocamento.
A ao colocar o resultado dessa função no parâmetro "x" do retângulo, ele se deslocará de forma uniforme com a velocidade adquirida pelo array. 

Por fim usei as funções text para mostrar o vencedor e para os números de cada carro companhar o sua posição. 







sábado, 2 de setembro de 2017

MAMI, Exercício 3 - Blocos


Desenvolvi uma aplicação que gera quadros com a função bloco, da qual dentro dela há também o uso da função circulo que gera elipses com cores e tamanhos dentro de um limite randômico. 

As funções foram iniciadas em sala e inspirada em uma obra de Kandinsky mas o código foi aperfeiçoado em casa, mudando apenas a implementação dos valores de inicio para uma opção de mudar a quantidade de blocos com quadros de círculos através de um slider. No código, o valor apresentado no "slide bar " será a quantidade de linhas e colunas que serão apresentadas na tela, onde 1 linha e 1 coluna é 1 bloco e 5 linhas 5 colunas são 25 blocos, ou seja , uma lógica idêntica a de uma matriz .

A biblioteca "ControlP5" precisa ser baixada para usar sua importação, na qual pode ser feita manualmente ou de forma simples, baixando a biblioteca pelo próprio Processing, na opção "adicionar modo " e procurando o "ControlP5" na seção "Libraries".

Vale ressaltar que quado você coloca uma certa quantidade para visualizar e quer diminuir, é essencial a presença da função background() no draw()  para que a visualização anterior não atrapalhe as posteriores, pois como o Processing sempre sobrepõe a imagem anterior e nunca apaga, usar o background() faz que cubra os blocos que não estão sendo usados dando uma impressão de que o item foi apagado.

Para que os círculos não ficassem piscando e mudando de cor a cada frame do loop do draw, criei variáveis para checar e cancelar a mudança de cor de forma desordenada, mesmo que o padrão de cores seja randômico. 

Exemplo:




sexta-feira, 1 de setembro de 2017

MAMI, Exercício 2 - Debug


A ferramenta Debug auxilia no desenvolvimento dos programas, pois permite ao programador, saber o que há de errado com seu programa e código de uma forma muito mais completa do que apenas imprimindo na tela como é no caso do println().
Ela detalha informações sobre as variáveis globais e do código na qual podem ser por completo ou apenas em um trecho dele, onde o programador poderá selecionar o campo de ação no código.


 Com o Debug ativo, dois botões são adicionados a interface do Processing, um deles é o step e o outro é o continue, na qual o primeiro deixa o usuário ver o passo a passo da ação do seu código, e o segundo continua até o fim da ação caso não seja interrompido. Na janela do Debug também são apresentadas informações como a taxa de frames, posição do mouse e tamanho da tela.

No exemplo a seguir podemos ver que a variável global mostrada termina sempre em "n -1", pois neste caso é o que representa o fim do laço de da condição onde n só seria executado até chegar a 0, logo quando atinge -1 é o momento é que sai do laço e programa para de rodar.