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:
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
Antes de começar a resolução da atividade, vamos entender brevemente como funciona o lançamento balístico.
01 - Lançamento balístico
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âneosCriaremos 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
Postar um comentário