Modell / Formel für den springenden Ball

Ich programmiere eine Animation eines springenden Balls und möchte, dass sie so realistisch wie möglich ist.

Ich verstehe die Physik voll und ganz, während der Ball steigt und fällt: Er beschleunigt mit 9,8 Metern / Sekunde / Sekunde nach unten.

Aber sobald er auf dem Boden aufschlägt, bin ich verloren. Ich weiß, dass es eine gewisse Kompression erfährt, die die Geschwindigkeit wieder nach oben übersetzt. An diesem Punkt ist die Schwerkraft wieder die einzige Kraft, die auf sie wirkt. Aber ich weiß nicht, wie ich die Kompression und Ablenkung des auf den Boden auftreffenden Balls modellieren soll / p>

(Außerdem beschäftige ich mich nur mit streng vertikaler Lineargeschwindigkeit und Beschleunigung. Der Ball bewegt sich nicht horizontal oder dreht sich überhaupt nicht. Und ich gehe von einem vernachlässigbaren Verlust des Luftwiderstands aus.)

Ich weiß, dass es Konstanten gibt, mit denen man umgehen muss: Wie sehr widersteht der Ball der Kompression und wie viel Energie geht während des Abpralls verloren, aber ich weiß nicht, wie sie zusammenhängen.

Kann mir jemand etwas geben? eine Erklärung mit einem oder zwei Absätzen und / oder (a) Formel (e) und / oder einen Hinweis auf eine Ressource, in der ich mehr lesen kann? (Ja, ich habe bereits ungefähr eine Stunde damit verbracht, es zu googeln.)

Ich lese gerne weiter darüber, bis ich verstehe, dass ich zu diesem Zeitpunkt einfach nicht weiß, wohin ich mich wenden soll.

Vielen Dank im Voraus!

Kommentare

Antwort

Sie sagen, Sie ignorieren die Reibung der Luft, aber Nehmen wir eine teilweise unelastische Kollision an. Das heißt, wir können das Problem lösen zwei Teile:

  1. Während der Ball keinen Bodenkontakt hat, ist die Höhe zum Zeitpunkt $ t $ nach dem letzten Sprung bei $ t_0 $ durch $$ h (t + t_0) gegeben. = v_0 t – \ frac12 gt ^ 2 $$ wobei $ v_0 $ die Geschwindigkeit unmittelbar nach dem Sprung ist. Diese Geschwindigkeit ändert sich von einem Sprung zum nächsten.
  2. Während des Aufpralls verformt sich der Ball und es kommt zu Reibung. Die genaue Form des Balls während des Aufpralls ist in einer einfachen Gleichung schwer zu erfassen, da sie von der Zusammensetzung des Balls und des Bodens abhängt. Als vereinfachende Annahme betrachten wir den Ball als „Masse auf einer leicht verlustbehafteten Feder mit einer Federkonstante $ k $“; dann zeigt der Ball während des Aufpralls eine (ungefähr) gedämpfte einfache harmonische Bewegung: Dies bedeutet, dass die Aufprallzeit unabhängig von der Aufprallgeschwindigkeit (!)

ist Der Restitutionskoeffizient ist ein Parameter einer Kugel / Oberfläche und spiegelt den Bruchteil der Geschwindigkeit unmittelbar nach dem Abprall geteilt durch die Geschwindigkeit unmittelbar zuvor wider. Für einen Golfball kann dies bis zu 0,8 betragen; für einen Tennisball sind es ungefähr 0,75.

Verwenden Sie $ \ rho = 0,75 $, wenn Sie einen Ball aus einer Höhe von 5 m fallen lassen (und $ g = 10 ~ m / s ^ 2 $ für setzen Bequemlichkeit) würde es nach 1 Sekunde mit einer Geschwindigkeit von 10 m / s landen und nach dem Abprall (einige kurze Zeit $ \ Delta t $) würde es wieder mit einer niedrigeren Geschwindigkeit $ v_1 = 7,5 m / s $ auftauchen. Die Zeit, die bis zum nächsten Sprung in der Luft verbracht wird, ergibt sich aus $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

Während des Balls Wenn er mit dem Boden in Kontakt steht, können wir davon ausgehen, dass sich sein Zentrum annähernd sinusförmig bewegt. Wie ich bereits sagte, ist es wichtig, dass die Kontaktzeit unabhängig von der Fallhöhe ist (unter der Annahme einer linearen Federkonstante). In der Realität nimmt die Federkonstante zu, wenn sich die Kugel stärker verformt – was die Kontaktzeit tatsächlich kürzer macht, wenn die Aufprallgeschwindigkeit höher ist. Für Ihre Simulation ist dies jedoch unwahrscheinlich.

Um von oben zu einem „mathematischen Modell“ zu gelangen, möchten Sie diesen Python-Code möglicherweise an Ihre Anforderungen anpassen:

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") 

Dieser Code erzeugt das folgende Diagramm:

Geben Sie hier die Bildbeschreibung ein

Antwort

Nun, die Schwierigkeit besteht darin, wenn der Ball mit der Wand in Kontakt kommt. Einige Dinge, die Sie berücksichtigen können.

  • elastischer Aufprall. In diesem Fall können Sie den Ball als elastische Feder behandeln. Wenn es mit einer Geschwindigkeit auf die Wand auftrifft, wird die kinetische Energie in die potentielle Energie der Feder umgewandelt. Sobald die maximale Verformung erreicht ist, springt die Kugel zurück in den Raum. Die Verformungsrichtung ist normal zur Wand.
  • unelastischer Aufprall. Dies ist ähnlich wie oben, außer dass der Ball nur einen Bruchteil der kinetischen Energie zurückgewinnt. Dies ist näher an der Realität. Der Verlust wird normalerweise unter Verwendung des Restitutionskoeffizienten beschrieben.
  • unelastischer Aufprall mit Reibung. Wenn der Ball mit einem Winkel gegen eine Wand schlägt, kann der Ball auf der Oberfläche gleiten. Dies kommt der Realität näher.
  • Luftwiderstand. Wenn sich der Ball im Weltraum bewegt, gibt es eine Luftwiderstandskraft, um ihn zu verlangsamen.

Kommentare

  • Entschuldigung, ich glaube, ich war nicht ' nicht klar genug. Ich ' spreche von teilweise unelastischen Auswirkungen. Aus meinem ursprünglichen Beitrag " … wie viel Energie während des Abpralls verloren geht … ". Außerdem habe ich im ursprünglichen Beitrag erwähnt, dass ich ' den Luftwiderstand ignoriere (" … I Ich gehe von einem vernachlässigbaren Verlust des Luftwiderstands aus … "), und ich ' versuche nicht, den Seitwärtsimpuls zu modellieren (" unelastischer Aufprall mit Reibung "). Ich möchte nur die Kompression, Verzögerung, Dekompression und Beschleunigung modellieren, die beim Aufprall auf den Boden auftreten, sowie den Energieverlust, der dem gesamten Prozess innewohnt.

Antwort

Visual Solutions (jetzt Altair) erstellt VisSim Software. Hier ist ein Demo-Blockdiagramm, mit dem ein springender Ball simuliert wurde: Geben Sie hier die Bildbeschreibung ein

Die $ 1 / s $ -Blöcke sind Integratorblöcke aus der VisSim-Bibliothek.

Die Darstellung des springenden Balls mit diesen Parametern ist unten dargestellt.

Geben Sie hier die Bildbeschreibung ein.

Wenn Sie daran interessiert sind, dies auszuführen, wird die Demo mit der Installation und geliefert Sie können eine kostenlose 60-Tage-Testversion hier

herunterladen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.