Advanced Games Physics
7. Kapitel

Der freie elastische Stoß

Zwei Objekte stoßen aus beliebigen Richtungen anein­ander

Der freie elastische Stoß ist ein etwas allgemeinerer Fall des Stoßgeschehens. Jetzt kann das stoßende Objekt aus jeder beliebigen Richtung auf ein anderes, aber ruhendes Objekt auftreffen. Bevor wir an die Umsetzung gehen, sollten wir uns aber über die Berechnung der verschiedenen Vektorkomponenten Gedanken machen. Eigentlich stellen doch die zentralen und die tangentialen Vektorkomponenten Komponenten ein und desselben Vektors in verschiedenen Koordinatensystemen dar. So wird eine Vektor a im x-y-Koordinatensystem durch seine Komponenten ax und ay beschrieben. Nehmen wir nun ein anderes, rechtwinkliges, Koordinatensystem, das gegenüber dem genannten x-y-Koordinatensystem um den Winkel φ gedreht ist. Dieses nennen wir das u-v-Koordinatensystem. Dann wird der Vektor a in diesem System durch seine Komponenten au und av ausgedrückt. Auf unsere Aufgabe bezogen heißt das, die Geschwindigkeitsvektoren der am Stoß beteiligten Kugeln müssen vor dem Stoß aus ihrer x-y-Darstellung in eine u-v- sprich vZ-vT-Darstellung überführt werden. Umgekehrt müssen diese Komponenten nach dem Stoß wieder in die ursprüngliche x-y-Darstellung zurück transformiert werden. Im Endeffekt handelt es sich hierbei um die Vor- bzw. Rückdrehung von Koordinatensystemen bei einem unverrückten Vektor. In kannst Du diese Transformationen nachvollziehen. Links im Bild ist zunächst ein x-y-Koordinatensystem, in dem ein Ortsvektor a (weißer, mit der Maus drehbarer Pfeil) zu sehen ist. Ebenfalls zus ehen sind seine Komponenten ax (blau) und ay (grün). Nun kann hier ein zweites Koordinatensystem um den Winkel φ (Schieberegler) gedreht werden. Sofort siehst Du, wenn Du den Modus-Button betätigst, die Komponenten au und av im gedrehten Koordinatensystem.
Nach dem Stoß stehen die Koordinaten a'u und a'v zur Verfügung. Diese sind nun in das x-y-Koordinatensystem zurück transformiert, um so die kartesische Darstellung der sich bewegenden Kugeln nach dem Stoß zu ermöglichen. Dies zeigt dann das rechte Koordinatensystem. Der Vektor a' ist danach dem ursprünglichen Vektor identisch, da hier im Beispiel keine Wechselwirkung im Stoß implementiert ist:
download p5.js
Bitte einen Augenblick Geduld
während das Programm geladen wird!

Abb. Vektorkomponenten in einem rotierten Koordinatensystem

Geistesblitz
Vektortrans­formation
Die Berechnung von Komponenten eines Vektors, z.B. v 1 in seine Komponenten in einem anderen Koordinatensystem, wie z.B. in die tangentiale vT und die zentrale Komponente vZ stellen immer wieder eine Herausforderung an das Vorstellungsvermögen dar. Ganz besonders dann, wenn es sich um ein 3D-Problem handeln sollte.
Abhilfe schafft hier die Behandlung der Aufgabe in vektorieller Schreibweise, indem Vektoren, deren Komponenten im kartesischen Koordinatensystem vorliegen, durch eine Koordinatentransformation in ein geeignetes - d.h. gedrehtes - Koordinatensystem übersetzt werden. Wie das funktioniert wird im nebenstehenden 3. Geistesblitz erklärt. Eine ausführliche Beschreibung für Drehungen im 3D-Raum weist die erforderlichen Rotationsmatrizen für Drehungen um die Achsen des 3D-Koordinatensystems aus.



Im nebenstehenden Beispielprogramm wird eine solche Transfrormation am Beispiel der Reflexion eines Objektes an einer beliebig orientierten starren Wand (grauer Balken) demonstriert. Zur besseren Veranschaulichung werden nur der Geschwindigkeits-Vektor sowie seine Komponenten vor und nach der der Reflexion dargestellt.
Es können sowohl die Ausrichtung der Wand mit dem Schieberegler als auch Betrag und Richtung des Geschwindigkeitsvektors v (grüner Knopf am Ende des Geschwindigkeitsvektors) eingestellt werden. Mit dem Button Mode kann die Darstellung der Geschwindigkeiten, ihrer Komponenten vor und nach dem Stoß ausgewählt werden.
download p5.js
run program

Aber nun zum dezentralen Stoß. Wenden wir die Rotation des x-y-Koordinatensystems auf den Geschwindigkeitsvektor v vor dem Stoß an. Bedenken wir, dass die beiden Kugeln sich unter dem Stoßwinkel β () treffen, dann bedeutet dies, dass unser x-y-Koordinatensystem um diesen Winkel in mathematisch positive Drehrichtung
()
Formel
gedreht werden muss, damit die zentrale Geschwindigkeitskomponente vZ in die Stoßrichtung und die tangentiale Geschwindigkeitskomponente vT senkrecht dazu bestimmt wird. Damit ergeben sich die beiden Komponenten entsprechend und zu:
()
v Z = v x · cos β + v y · sin β

v T = v x · sin β + v y · cos β
Vektorkomponenten im Stoßmoment

Abb. Vektorkomponenten im Stoßmoment

Aus dem vorherigen Kapitel wissen wir bereits, dass die Zentralkomponenten vZ nach den Stoßgesetzen wechselwirken, wohingegen die Tangential­komponenten vT im Stoß unverändert bleiben. Nach dem Stoß stehen die folgenden Komponenten zur Verfügung:
()
Formel
und
()
Formel
Die nun nach dem Stoß wieder in das x-y-Koordinatensystem zurück transformiert werden müssen. Das geschieht nun dadurch, dass die zu inverse Transformation ausgeführt bzw. das vT-vZ-Koordinatensystem um den Winkel
()
φ = β
zurück gedreht (entgegen der mathematisch positiven Drehrichtung!) ausgeführt wird (). Was auf die Rücktransformation
()
v x = v T · cos β v Z · sin β

v y = v T · sin β + v Z · cos β
Vektorkomponenten im Stoßmoment

Abb. Vektorkomponenten nach dem Stoß

führt. Übrigens, dies entspricht genau der Transformation nach , wenn die Rotation genau in die entgegen gesetzte Richtung erfolgt, der Drehwinkel also ist. Für beide Operationen kann daher die selbe Transformations-Funktion Anwendung finden, wie das auch aus hervorgeht.



Abb. Hin- und Rücktrans­formation der Geschwindig­keits­komponenten


Das Beispielprogramm gestattet die detailierte Untersuchung eines Stoßvorgangs. Vor dem Start können die Positionen der Kugeln und deren Geschwindigkeitsvektoren vor dem Stoß per Maus bestimmt werden. Dazu werden die Kugeln selbst (Standort) bzw. die Vektoren mit der Maus angefasst und bewegt. Mit dem Schiebe­regler ist das Massen­verhältnis beider Kugeln veränderbar. Die Abarbeitung erfolgt schrittweise, so dass Du im Detail nachvollziehen kannst, wie die vektoriellen Komponenten vor, während und nach dem Stoß aussehen.
download processing
download p5.js
run program


Ergebnisdiskussion: Aus der allgemein gültigen Lösung für die Wechselwirkung im Stoß aus beliebigen Richtungen geht hervor, dass die Berechnung für beide Objekte in gleicher Weise erfolgt. D.h. es spielt keine Rolle, von welchem Objekt aus die Berechnung der Bewegungen vorgenommen wird. Die tangentialen Komponenten v1T bzw. v2T und die zentralen Komponenten v1Z bzw. v2Z werden aus den Geschwindigkeiten v1 bzw. v2 vor dem Stoß gebildet, wie die x- bzw. y-Komponenten v'1x bzw. v'1y und v'2x bzw. v'2y aus den Geschwindigkeiten v'1 bzw. v'2 nach dem Stoß.

Wie Du erkennen kannst, ist die gegenseitige Beeinflussung der Objektbewegungen symmetrisch. Ein solches Symmetrieverhalten erleichtert das Verstehen und damit die Erweiterung der 2-Objekte-Lösung auf beliebig viele Objekte.

Bouncing - der springende Ball

Der springende Ball ist ein Sonderfall des dezentralen Stoßes. Wird nämlich die als ruhend betrachtete Masse m2 und deren Radius R2 unendlich groß gewählt, mutiert die Kugel zur harten Ebene. Trifft nun eine Kugel der Masse m1 mit der Geschwindigkeit v1 unter dem Winkel α auf die unendlich schwere und unendlich große Masse m1, so wird die horizontale Geschwindig­keits­kompo­nente auch nach dem Stoß ihren Wert behalten, also v 1 x = v 1 x . Und was passiert mit der y-Komponente der Geschwindigkeit? Darüber geben und Auskunft.
Erweitern beider Gleichungen mit 1 m 2 ergibt, wenn m 2 :
()
Formel
sowie
()
Formel
Und wie erfolgt der Stoß auf einer schiefen Ebene? Nach Möglichkeit wollen wir die Transformation nach bzw. weiter nutzen. Damit das gelingt, müssen wir aber den richtigen Rotationswinkel bestimmen. Nehmen wir an, dass die Ebene im Winkel β geneigt ist () und die Ebene durch einen sehr großen Kreis R → ∞ ersetzt wird. Nun vergleichen wir die Stoßsituation mit der von . Dann sehen wir, dass das Koordinatensystem um β + π gedreht werden muss, um die gleiche Stoss-Situation herbei zu führen!
Um Verwirrungen zu vermeiden, habe ich die Geschwindigkeits-Komponenten von Zentralkomponente vZ in Normalkomponente vN und die Tangentialkomponente vT in Parallelkomponente vP umbenannt. So lautet dann die Transformationsregel:
()
v N = v x · cos β + π 2 + v y · sin β + π 2

v P = v x · sin β + π 2 + v y · cos β + π 2
Die Rücktransformation wird ebenso wie in durch das Zurückdrehen des Koordinatensystems um den Winkel -(β + π) ausgeführt:
()
v' x = v' N · cos β + π 2 - v' P · sin β + π 2

v' y = v' N · sin β + π 2 + v' P · cos β + π 2
Vektorkomponenten auf der schiefen Ebene

Abb. Vektorkomponenten auf der schiefen Ebene

Daraus kann leicht der Sonderfall der Reflexion auf einer horizontalen Ebene (β = 0) abgeleitet werden. Wegen des großen Radius der 2. "Kugel" ist der Kontaktwinkel zwischen Kugel und Untergrund immer 90°, d.h. die Normalenkomponente wird gemäß immer zu 100% reflektiert, ändert also nur ihr Vorzeichen, Während die Parallelkomponente unverändert bleibt:
()
v' x = v x

v' y = - v y
verdeutlicht diesen Vorgang, den wir für gewöhnlich als Reflexion nach dem Prinzip Einfallswinkel gleich Ausfallswinkel bezeichnen: φ = φ

Vektorkomponenten im Stoßmoment

Abb. Vektorkomponenten nach dem Stoß

Bouncing an beweglichem Objekt

Eine im Spieleumfeld häufig auftretende Situation zeigt . Ein Ball liegt (oder rollt) auf einem festen Untergrund und wird von einem anderen Ball unter einem beliebigen Winkel β getroffen. Der feste Untergrund stellt eine Zwangsbedingung für den darauf liegenden oder rollenden Ball dar. Gesucht sind die Bewegungsgleichungen der beiden Bälle nach dem Stoß.

Schiefe Ebene

Abb. Stoß mit Zwangsbedingung

Leider gehört diese Aufgabenstellung zu den Problemen, die rein geometrisch nicht zu lösen sind, da hier drei Partner am Stoß beteiligt sind: die zwei Bälle und die Unterlage. Drei Partner und zwei Bedingungen (Energieerhaltung und Impulserhaltung), das ist nicht lösbar! Also müssen wir uns eine Ersatzlösung ausdenken, die wenigstens dem Anschein nach, der Realität folgt.

Vom Bouncing wissen wir, dass die Bewegung eines Balles, der auf eine harte, ebene Unterlage aufprallt, an dieser Unterlage reflektiert wird. Diese Eigenschaft machen wir uns hier zu Nutze. Aber, die reflektierte y-Komponente des auf der Ebene ruhenden Balls schlagen wir nach dem Stoß der y-Komponente des fliegenden Balls zu.
()
Formel
Das ist physikalisch nicht korrekt, weil es den Energieerhaltungssatz verletzt. Aber optisch macht diese Vorgehensweise einen recht guten Eindruck.

Im Beispielprogramm sind die Bälle B1 und B2 zu sehen. B2 ruht auf einer festen Unterlage und wird bei geeigneter Orientierung von Ort und Geschwindigkeit des Balls B1 getroffen. Die einzelnen Phasen des Stoßgeschehens sind im Schrittbetrieb zu verfolgen.
download p5.js
run program

Ergebnisdiskussion: Die beiden Extremfälle
  1. beide Bälle liegen auf der Ebene nebeneinander und
  2. beide Bälle befinden sich senkrecht über der Ebene übereinander
werden ideal abgedeckt. Dies beweist auch der Vergleich der kinetischen Energien vor und nach dem Stoß.
Anders bei den Zwischenwinkeln. Dort wird der Energie­erhaltungs­satz verletzt, was aber der optischen Erscheinung keinen Abbruch tut.
Eine alternative Lösungsmöglichkeit bietet die Nutzung von Feder-Masse-Systemen zur Modellierung dieser Stoßsituation.