Estou programando uma animação de uma bola quicando e quero que seja o mais realista possível.
Eu entendo perfeitamente a física enquanto a bola está subindo e descendo: ela acelera para baixo a 9,8 metros / segundo / segundo.
Mas assim que atinge o solo, estou perdido. Eu sei que ele experimenta alguma compressão que traduz sua velocidade para cima novamente, no ponto em que a gravidade é novamente a única força agindo sobre ele. Mas eu não sei como modelar a compressão e deflexão da bola que atinge o solo.
(Além disso, estou lidando apenas com aceleração e velocidade linear estritamente vertical. A bola não está viajando horizontalmente ou girando. E estou assumindo uma perda insignificante de resistência do ar.)
Eu sei que há constantes para lidar com: quanto a bola resiste à compressão e quanta energia é perdida durante o salto, mas não sei como elas estão relacionadas.
Alguém pode me dar uma explicação de um ou dois parágrafos e / ou (a) fórmula (e) e / ou me indique um recurso onde eu possa ler mais? (sim, já passei uma hora ou mais pesquisando sobre isso)
Fico feliz em continuar lendo sobre isso até entender, só não sei para onde ir neste momento.
Obrigado antecipadamente!
Comentários
- Basta inverter o sinal da velocidade e reduzir a velocidade em uma porcentagem.
- A forma da bola é sempre circular ou você também quer simular deformações?
- Resposta relevante: physics.stackexchange.com/ a / 254379/392
- Rod Cross parece ser uma autoridade no assunto de bolas quicando. Um de seus artigos: physics.usyd .edu.au / ~ cross / PUBLICATIONS / BallBounce.pdf e uma página que lista mais links: real-world-physics-problems.com/bouncing-ball -physics.html
Resposta
Você diz que está ignorando a fricção do ar, mas assumir uma colisão parcialmente inelástica. Isso significa que podemos dividir o problema em duas partes:
- Enquanto a bola não está em contato com o solo, a altura no momento $ t $ após o último salto em $ t_0 $ é dada por $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$ onde $ v_0 $ é a velocidade logo após o salto. Essa velocidade mudará de um salto para o outro.
- Durante o impacto, a bola se deformará e haverá atrito. A forma exata da bola durante o impacto é difícil de capturar em uma equação simples porque depende da composição da bola e do chão. Como uma suposição simplificadora, considere a bola como uma “massa em uma mola levemente com perdas com uma constante de mola $ k $”; então a bola exibirá movimento harmônico simples amortecido (aproximadamente) durante o impacto: isso significa que o tempo de impacto será independente da velocidade de impacto (!)
O coeficiente de restituição é um parâmetro de uma bola / superfície e reflete a fração da velocidade logo após o salto dividido pela velocidade imediatamente anterior. Para uma bola de golfe, isso pode ser tão alto quanto 0,8; para uma bola de tênis é cerca de 0,75.
Usando $ \ rho = 0,75 $, se você deixar cair uma bola de uma altura de 5 m (e colocar $ g = 10 ~ m / s ^ 2 $ para conveniência) ele pousaria após 1 segundo com uma velocidade de 10 m / s, e após o salto (algum tempo curto $ \ Delta t $) ele voltaria a subir com uma velocidade inferior $ v_1 = 7,5 m / s $. O tempo gasto no ar até o próximo salto é dado por $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$
Enquanto a bola está em contato com o solo, podemos considerar que seu centro se move de forma aproximadamente sinusoidal – como eu disse, o importante é que o tempo de contato seja independente da altura de queda (no pressuposto da constante linear da mola). Na realidade, à medida que a bola se deforma mais, a constante da mola aumentará – o que tornará o tempo de contato mais curto, pois a velocidade de impacto será maior. Mas, para a sua simulação, é improvável que isso importe.
Para ir do acima para um “modelo matemático”, você pode modificar este código Python de acordo com suas necessidades:
from math import sqrt import matplotlib.pyplot as plt h0 = 5 # m/s v = 0 # m/s, current velocity g = 10 # m/s/s t = 0 # starting time dt = 0.001 # time step rho = 0.75 # coefficient of restitution tau = 0.10 # contact time for bounce hmax = h0 # keep track of the maximum height h = h0 hstop = 0.01 # stop when bounce is less than 1 cm freefall = True # state: freefall or in contact t_last = -sqrt(2*h0/g) # time we would have launched to get to h0 at t=0 vmax = sqrt(2 * hmax * g) H = [] T = [] while(hmax > hstop): if(freefall): hnew = h + v*dt - 0.5*g*dt*dt if(hnew<0): t = t_last + 2*sqrt(2*hmax/g) freefall = False t_last = t + tau h = 0 else: t = t + dt v = v - g*dt h = hnew else: t = t + tau vmax = vmax * rho v = vmax freefall = True h = 0 hmax = 0.5*vmax*vmax/g H.append(h) T.append(t) print("stopped bouncing at t=%.3f\n"%(t)) plt.figure() plt.plot(T, H) plt.xlabel("time") plt.ylabel("height") plt.title("bouncing ball")
Este código produz o seguinte gráfico:
Resposta
Bem, a dificuldade é quando a bola entra em contato com a parede. Poucas coisas você pode considerar.
- impacto elástico. Nesse caso, você pode tratar a bola como uma mola elástica. Ao atingir a parede com velocidade, a energia cinética será convertida em energia potencial da mola. E então, após atingir a deformação máxima, a bola voltará ao espaço. A direção da deformação é normal à parede.
- impacto inelástico. É semelhante ao anterior, exceto que a bola recupera apenas uma fração da energia cinética. Isso é mais próximo da realidade. A perda é geralmente descrita usando o coeficiente de restituição.
- impacto inelástico com fricção. Quando a bola atinge uma parede com um ângulo, a bola pode deslizar na superfície. Isso se torna mais próximo da realidade.
- resistência do ar. Quando a bola está se movendo no espaço, há força de arrasto do ar para retardá-la.
Comentários
- Desculpe, acho que não foi ' claro o suficiente. Eu ' estou falando sobre impacto parcialmente inelástico. Da minha postagem original " … quanta energia é perdida durante o salto … ". Além disso, mencionei na postagem original, eu ' m ignorando a resistência do ar (" … I ' m assumindo uma perda insignificante de resistência do ar … "), e eu ' não estou tentando modelar o momentum lateral (" impacto inelástico com fricção "). Eu só quero modelar a compressão, desaceleração, descompressão e aceleração que ocorrem durante o impacto com o solo, e a perda de energia inerente a todo o processo.
Resposta
Visual Solutions (agora Altair) faz o software VisSim. Aqui está um diagrama de blocos de demonstração que eles usaram para simular uma bola quicando:
Os blocos $ 1 / s $ são blocos integradores da biblioteca VisSim.
O gráfico da bola quicando com esses parâmetros é mostrado abaixo.
Se você estiver interessado em executar isso, a demonstração vem com a instalação e você pode baixar um teste gratuito de 60 dias aqui