Atividade 05 - Visualização dos valores instantâneos do simulador de lançamento balístico

Para essa atividade foi pedido que fosse adicionado ao simulador de lançamento balístico feito em sala, um visualizador dos valores instantâneos das variáveis físicas envolvidas, incluindo o cálculo da velocidade vertical do corpo (vvert = f(t)).
Antes de começar a resolução da atividade, vamos entender brevemente como funciona o lançamento balístico.

01 - Lançamento balístico
Em sala de aula fizemos basicamente dois simuladores de movimento. O de Movimento Retilíneo Uniforme (MRU) e o de Movimento Retilíneo Uniformemente Variado (MRUV).
Começando pela definição dos movimentos:
- MRU: é um movimento em uma trajetória reta que possui velocidade constante, consequentemente, é possível afirmar que o corpo percorre uma mesma distância em intervalo de tempos iguais!
- MRUV: é um movimento que também possui uma trajetória reta, no qual sua aceleração é sempre constante. Logo, sua velocidade sofre variações iguais em intervalos de tempos iguais.
Há também suas fórmulas utilizadas no simulador balístico:
Fórmula da distância no MRU
Fórmula da distância (2º fórmula) no MRUV
O lançamento balístico faz o uso desses dois movimentos. Sendo a velocidade horizontal um MRU e a velocidade vertical do corpo um MRUV. 
OBS: é importante ressaltar que para ser um lançamento balístico, a aceleração tem que ser obrigatoriamente negativa, de modo que quando o objeto atingir a altura máxima sua velocidade vertical vai ser igual a zero e um segundo depois o objeto irá entrar em queda livre com uma velocidade vertical negativa. Caso a aceleração seja positiva, o gráfico gerado vai ser uma função exponencialmente positiva demonstrada no vídeo abaixo:
02 - Visualização dos valores instantâneos
Criaremos uma função chamada mostraVisualizador().
Para "escrever" na tela do processing iremos utilizar a função text(a,x,y).
A variável "a" é o texto que irá aparecer, "x" e "y" são o par de coordenadas para indicar onde o texto irá aparecer.
Além disso, usaremos a função textSize(x), que altera o tamanho do meu texto sendo "x" o tamanho. E por último usaremos a função fill, para alterar a cor do meu texto.
Minha função mostraVisualizador vai mostrar cinco variáveis:
Distância Horizontal(X): vai usar a fórmula da distância em MRU (d = v x t)
coordenadas: (5,620)
- Distância Vertical(Y): vai usar a fórmula da distância em MRUV (d = v * t + a * t * t/2.0)
coordenadas: (5,640)
- Velocidade Horizontal(Vx): valor constante escolhido
coordenadas: (300,620)
- Velocidade Vertical(Vy): vai utilizar a fórmula de velocidade em MRUV (v = v0 + a * t)
coordenadas: (300,640)
- Tempo: 1 fps(frames per second)
coordenadas: (200,660)
Todas as variáveis são calculadas e depois mostradas como texto utilizando essa função.
A dimensão da tela foi aumentada de 600x600 para 600x700 com o intuito de colocar os textos gerados pela nossa função em baixo do gráfico.
OBS: todas as variáveis são do tipo float, para evitar que ocorram bugs em divisões que o resultado não seja números inteiros!
03 - Executando o código
Iremos gerar um gráfico com os seguintes valores:
- Velocidade horizontal: 10m/s
- Velocidade vertical: 10m/s
- Aceleração: -1m/s²
- Tempo: 1fps
04 - 60 FPS
Para deixar nosso movimento suave e ainda manter o código em tempo real, vamos utilizar o método aplicado na atividade anterior(atividade 04).
Mantendo os mesmos valores do gráfico anterior, modificando o frameRate para sessenta e dividindo o tempo nas equações e na função mostraVisualizador por sessenta obtemos o seguinte resultado:

Ainda podemos transformar os valores que estão em float para int e temos um gráfico sem valores quebrados:

Comentários