Atividade 5 - Movimento Balístico em bolinha

A atividade proposta trata-se de desenvolver uma aplicação que simule uma bolinha pulando, aplicando os conceitos do movimento balístico. A trajetória final da bolinha deve ficar parecida com esta:

A locomoção da bolinha se dá através do movimento balístico, que se baseia no cálculo do MRU horizontal (movimento retilíneo uniforme) e do MRUV vertical (movimento retilíneo uniformemente variado).

Para iniciar a aplicação, criaremos a função para calcular o valor do MRU, que recebe como parâmetros a velocidade horizontal e o tempo da bolinha. A função retorna o resultado da equação que define o MRU, que é:
 d = v * t

Agora criaremos a função do MRUV, que recebe como parâmetros a velocidade vertical, a aceleração e o tempo. A função retorna o resultado da equação que define o MRUV, que é:
 d = v * t + a * t * t / 2

Depois criaremos a função lancamento() que será a responsável por retornar os valores do MRU e MRUV respectivamente dentro de um array de duas posições. Os parâmetros recebidos pela função são as velocidades horizontal e vertical, a aceleração e o tempo.

Agora com as funções necessárias já prontas, criaremos as variáveis pertencentes a bolinha, como as velocidades horizontal e vertical, aceleração, tempo, e o array que guardará os valores passados na função lancamento(). 

Na função setup() defini o tamanho da tela como 800x600, e defini o array como tendo duas posições.

Já na função draw() comecei definindo o background como branco para apagar o rastro da bolinha e defini seu preenchimento como verde. Após isso, atribui a função lancamento() ao array criado anteriormente. Após isso, criei uma condição para saber quando a bolinha encosta no chão, então se a posição y da bola for menor que 0, então é porque encostou. Caso isso aconteça, verifico se a posição x é menor que 0 também. Se for, é porque a bolinha deve estar parada, então atribuo 0 a todas as variáveis referentes ao movimento. Caso não seja, então o tempo volta a ser 0, e diminuo as velocidades vertical e horizontal. Além disso, criei uma variável para ir guardando a posição x atual da bolinha, para que ela não volte ao início sempre que encoste no chão.

Para finalizar, chamo a função ellipse() para desenhar a bolinha. A posição x será a variável auxiliar que criei somada ao valor do MRU. A posição y será a altura da tela (600) menos o valor do MRUV. E defini o diâmetro do círculo como 10. Após isso, incremento 1.0/60.0 à variável tempo, para que a bola se movimente em tempo real pela tela.

A aplicação final deve ficar parecido com isto:




Para baixar o código comentado da aplicação clique aqui

Comentários

Postagens mais visitadas deste blog

Atividade 16 - Polígono regular

Atividade 15 - Transição entre Imagens

Atividade 7 - Adaptive Logo