Modelo / fórmula para rebotar una pelota

Estoy programando una animación de una pelota que rebota y quiero que sea lo más realista posible.

Entiendo completamente la física mientras la pelota sube y baja: acelera hacia abajo a 9,8 metros / segundo / segundo.

Pero una vez que golpea el suelo, estoy perdido. Sé que experimenta algo de compresión que traduce su velocidad hacia arriba nuevamente, en cuyo punto la gravedad es nuevamente la única fuerza que actúa sobre ella. Pero no sé cómo modelar la compresión y la desviación de la pelota que golpea el suelo.

(Además, solo me refiero a la velocidad y la aceleración lineales estrictamente verticales. La pelota no se desplaza horizontalmente ni gira en absoluto. Y asumo una pérdida insignificante en la resistencia del aire).

Sé que hay constantes con las que lidiar: cuánto resiste la pelota a la compresión y cuánta energía se pierde durante el rebote, pero no sé cómo se relacionan.

¿Alguien puede darme una explicación de uno o dos párrafos y / o (a) la fórmula (e) y / o indicarme un recurso donde puedo leer más? (sí, ya he pasado más o menos una hora buscándolo en Google)

Estoy feliz de seguir leyendo sobre el tema hasta que lo entienda, pero no sé a dónde acudir en este momento.

¡Gracias de antemano!

Comentarios

Respuesta

Dice que está ignorando la fricción del aire, pero asumir una colisión parcialmente inelástica. Eso significa que podemos dividir el problema en dos partes:

  1. Mientras la pelota no está en contacto con el suelo, la altura en el momento $ t $ después del último rebote en $ t_0 $ viene dada por $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$ donde $ v_0 $ es la velocidad inmediatamente después del rebote. Esta velocidad cambiará de un rebote al siguiente.
  2. Durante el impacto, la pelota se deformará y habrá fricción. La forma exacta de la pelota durante el impacto es difícil de capturar en una ecuación simple porque depende de la composición de la pelota y el piso. Como suposición simplificadora, considere que la bola es una «masa en un resorte ligeramente con pérdidas con una constante $ k $»; entonces la pelota exhibirá (aproximadamente) un movimiento armónico simple amortiguado durante el impacto: esto significa que el tiempo del impacto será independiente de la velocidad del impacto (!)

El coeficiente de restitución es un parámetro de una pelota / superficie y refleja la fracción de velocidad justo después del rebote dividida por la velocidad justo antes. Para una pelota de golf, esto puede llegar hasta 0,8; para una pelota de tenis es alrededor de 0,75.

Usando $ \ rho = 0,75 $, si dejas caer una pelota desde una altura de 5 m (y colocas $ g = 10 ~ m / s ^ 2 $ por conveniencia) aterrizaría después de 1 segundo con una velocidad de 10 m / s, y después del rebote (poco tiempo $ \ Delta t $) volvería a subir con una velocidad más baja $ v_1 = 7.5 m / s $. El tiempo en el aire hasta el siguiente rebote viene dado por $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

Mientras la pelota está en contacto con el suelo, podemos considerar que su centro se mueve de forma aproximadamente sinusoidal; como dije, lo importante es que el tiempo de contacto es independiente de la altura de caída (en el supuesto de una constante de resorte lineal). En realidad, a medida que la bola se deforma más, la constante del resorte aumentará, lo que en realidad acortará el tiempo de contacto a medida que la velocidad del impacto sea mayor. Pero para su simulación es poco probable que eso importe.

Para pasar de lo anterior a un «modelo matemático», es posible que desee modificar este código de Python según sus necesidades:

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 produce el siguiente gráfico:

ingrese la descripción de la imagen aquí

Responder

Bueno, la dificultad es cuando la pelota entra en contacto con la pared. Pocas cosas que puedes considerar.

  • impacto elástico. En este caso, puede tratar la bola como un resorte elástico. Cuando impacta la pared con una velocidad, la energía cinética se convertirá en energía potencial del resorte. Y luego, después de que alcance la deformación máxima, la bola regresará al espacio. La dirección de deformación es normal a la pared.
  • Impacto inelástico. Es similar al anterior excepto que la pelota recupera solo una fracción de la energía cinética. Esto se acerca más a la realidad. La pérdida generalmente se describe usando el coeficiente de restitución.
  • Impacto inelástico con fricción. Cuando la pelota golpea una pared con un ángulo, la pelota puede deslizarse sobre la superficie. Esto se vuelve más cercano a la realidad.
  • arrastre de aire. Cuando la pelota se mueve en el espacio, hay una fuerza de arrastre de aire para frenarla.

Comentarios

  • Lo siento, supongo que no ' t lo suficientemente claro. ' hablo de un impacto parcialmente inelástico. De mi publicación original " … cuánta energía se pierde durante el rebote … ". Además, mencioné en la publicación original, ' ignoro la resistencia del aire (" … I ' m asumiendo una pérdida insignificante en la resistencia del aire … "), y ' no estoy tratando de modelar el impulso lateral (" impacto inelástico con fricción "). Solo quiero modelar la compresión, desaceleración, descompresión y aceleración que ocurren durante el impacto con el suelo, y la pérdida de energía inherente a todo el proceso.

Respuesta

Visual Solutions (ahora Altair) fabrica VisSim Software. Aquí hay un diagrama de bloques de demostración que han usado para simular una pelota que rebota: ingrese la descripción de la imagen aquí

Los bloques $ 1 / s $ son bloques integradores de la biblioteca VisSim.

A continuación se muestra el gráfico de la pelota que rebota con estos parámetros.

ingrese la descripción de la imagen aquí

Si está interesado en ejecutar esto, la demostración viene con la instalación y puede descargar una prueba gratuita de 60 días aquí

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *