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 é:
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
Postar um comentário