Tendo como base o movimento de queda livre modelado na tarefa 1 da disciplina
de Física (parte 1), faça um algoritmo que permita o cálculo da aceleração da
gravidade local. Como é um movimento de queda livre, a resistência do ar deverá
ser desprezada.
(a) Dados de entrada: altura máxima e tempo total de queda livre.
Observação: A velocidade inicial do corpo deve ser igual a zero!
(b) Dados de saída: aceleração da gravidade e velocidade com que o corpo
chega ao chão.
Observação: Para o cálculo da velocidade final, deverá ser utilizado o valor
calculado da aceleração da gravidade (parte a)!
Basicamente, você aplica duas forças à posição e a integra ao longo do tempo. A primeira força é a aplicada pela gravidade, *Fs = GravityConstant DistanceToTarget.
Nós adicionamos isso à posição real do ponto. No código C ++ temos:
xtarget: target position
vtarget: target velocity*
x: object position
v: object velocity
dt: timestep
F = Ki (xtarget-x) + Kp (vtarget-v);
F = clipMagnitude(F, Fmax);
v = v + F * dt;
v = clipMagnitude(v, vmax);
x = x + v * dt;
clipMagnitude(y, ymax):
r = magnitude(y) / ymax
if (r <= 1)
return y;
else
return y (1/r);*
Nos sistemas em que eu trabalhava com um valor em torno de 5, era um bom ponto para começar a experimentar o valor da constante da mola. Ajustá-lo muito alto resultará em uma reação muito rápida, e muito baixo o ponto reagirá muito lentamente.
Observe que talvez seja melhor criar uma classe que mantenha o estado da velocidade, em vez de precisar transmiti-lo para a função repetidamente.
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar