Mehrere kollidierende Kugeln

Ich habe einen Algorithmus geschrieben, um eine Kollision zwischen zwei Kugeln mit Impulserhaltung zu lösen. Es scheint genau wie erwartet in meinen Simulationen zu funktionieren. Hier ist der Code:

public void Resolve()
{
  var r = 0.5; // coefficient of restitution
  var m = Ball1.Mass + Ball2.Mass;
  var ua = Ball1.Velocity.Magnitude * Math.Cos(Ball1.Velocity.Angle(Normal));
  var ub = Ball2.Velocity.Magnitude * Math.Cos(Ball2.Velocity.Angle(Normal));
  var va = (r * Ball2.Mass * (ub - ua) + Ball1.Mass * ua + Ball2.Mass * ub) / m;
  var vb = (r * Ball1.Mass * (ua - ub) + Ball1.Mass * ua + Ball2.Mass * ub) / m;
  Ball1.Velocity -= Normal * (ua - va);
  Ball2.Velocity -= Normal * (ub - vb);
}

Jetzt möchte ich auch, dass dies funktioniert, wenn mehr als zwei Kugeln gleichzeitig kollidieren. Mein anfänglicher Gedanke war, dass ich diese Gleichung einfach mehrmals für jeden Kontakt zwischen Kugeln lösen könnte. Wenn ich eine Situation wie eine "Newtons Wiege" habe, in der die Kugeln "seriell" in Kontakt sind, ist es einfach, jede Kollision einzeln zu lösen und ohne die Kugeln zu bewegen, einfach weitermachen und die nächste und die nächste berechnen usw bis zum Erreichen des letzten Balls, der mit aller Energie endet, die auf dem Weg nicht verloren geht. Das funktioniert auch gut, wenn auch nicht sehr schnell.

Aber was ist zum Beispiel in einem Fall, in dem drei Kugeln V-förmig in Kontakt sind und die unterste Kugel diejenige mit einer Geschwindigkeit ist (in diesem Fall nach oben)? Ich meine, wie verteile ich jetzt die Energie auf die anderen beiden Kugeln? Die Gleichung, die ich habe, funktioniert nur für zwei Bälle und jetzt sehe ich nicht mehr, wie ich das iterativ berechnen kann. Können Sie mir dabei helfen, wie ich damit denken soll? Kann ich meine Resolve-Funktion so ändern, dass sie mit einer beliebigen Anzahl von Bällen funktioniert? Ich meine mit einem Satz von N Bälle mit Verbindungsflächen und Anfangsgeschwindigkeitsvektoren, was werden die resultierenden Geschwindigkeiten sein? Gibt es dafür eine allgemein bekannte Lösung?

Notiz:

Ich habe die Methode ausprobiert, die derzeit als Antwort markiert ist, aber ich habe leider in einigen Setups etwas seltsame Ergebnisse erhalten. Sei gewarnt. Ich werde wahrscheinlich wieder dazu zurückkehren, eine Kollision nach der anderen zu lösen. Ich werde diese Informationen aktualisieren, wenn ich dies mehr versucht habe.

Ich glaube nicht, dass man generell machen kann, was man will. Ich sehe keine Möglichkeit zu entscheiden, wie viel Impuls auf jede der anderen beiden Kugeln verteilt würde. Ich denke, es hängt zum Beispiel vom Elastizitätsmodul der Kugeln ab.

Antworten (3)

Sie müssen ein System von einrichten K Gleichungen mit K Impuls-Unbekannte, wenn abgeleitet von der N Bälle, während nur K von ihnen kollidieren irgendwann.

So geht's:

  1. Erstellen Sie einen (Block-)Vektor mit allen Geschwindigkeitsvektoren nacheinander. Die Größe ist 2 N × 1
    v = ( v 1 v 2 v N ) = ( X ˙ 1 j ˙ 1 X ˙ 2 j ˙ 2 X ˙ N j ˙ N )
  2. Erstellen Sie eine (Block-)Matrix mit allen Massen, aber auch von 2 N Reihen

    M = [ M 1 0 0 0 0 0 0 M 1 0 0 0 0 0 0 M 2 0 0 0 0 0 0 M 2 0 0 0 0 0 0 M N 0 0 0 0 0 0 M N ]
    so dass M v wären alle Impulskomponenten.

  3. Sie suchen nach der Geschwindigkeitsänderung Δ v aufgrund all der Impulse aus den Kollisionen. Wenn Sie die Summe aller Impulse kennen würden (wieder drin 2 N × 1 Vektor), dann würden Sie die Geschwindigkeitsänderung schreiben als

    Δ v = M 1

  4. Ein ... kreieren 2 N × K Kontaktpaarblockmatrix Z . Jede Spalte stellt einen Kontakt zwischen zwei Körpern dar ( ich J ), indem sie den Kontaktnormalenvektor enthält N ^ ich J im J -ten Blockposition und dem negativen Normalenvektor N ^ ich J im ich -te Blockposition. Zum Beispiel:

    Z = [ N ^ 13 0 N ^ 14 0 N ^ 24 0 N ^ 13 0 0 0 N ^ 24 N ^ 14 ]
    stellt die Kontaktpaarmatrix dar, wenn Körper ( 1 3 , 2 3 Und 1 4 ) kollidieren. Der Pfeil gibt die Richtung an, in die der Normalenvektor zeigt, und somit die Richtung, in der der positive Impuls angelegt wird. Denken Sie daran, dass jeder Kontaktnormalenvektor zwei Komponenten hat N ^ = ( cos ψ , Sünde ψ ) .

  5. Konstruiere ein K × 1 Vektor unbekannter Impulsgrößen für jedes Kontaktpaar.

    J = ( J 13 J 24 J 14 )
    Nun wird die Summe aller Impulse berechnet
    = Z J

  6. Berechnen Sie die relative Geschwindigkeit jedes Kontaktpaares ( K × 1 Vektor) durch Projektion der Geschwindigkeiten entlang der Kontaktnormalen

    u ich M P = Z v

  7. Stellen Sie das Kollisionsgesetz in Bezug auf die Relativgeschwindigkeiten vor und nach der Kollision auf.

    Z ( v + Δ v ) = ϵ Z v
    Wo ϵ ist der Restitutionskoeffizient. Verschieben Sie die Bekannten auf die rechte Seite und finden Sie die Änderung der relativen Geschwindigkeiten durch
    Z Δ v = ( 1 + ϵ ) Z v = ( 1 + ϵ ) u ich M P

  8. Setzen Sie 3. 5. und 7. zusammen, um zu machen

    Z ( M 1 ( Z J ) ) = ( 1 + ϵ ) u ich M P
    und nach den unbekannten Impulsen auflösen
    J = ( Z M 1 Z ) 1 ( 1 + ϵ ) u ich M P
    Beachten Sie, dass Z M 1 Z ist ein K × K Matrix, die Inversion benötigt.

  9. Wenn alle Impulse berechnet sind, ändert sich jeder Körpergeschwindigkeitsvektor um

    Δ v = M 1 Z J

Beispiel

Stellen Sie sich drei Kugeln vor, die gleichzeitig einschlagen:

Bild

Verwenden Sie dieses MATLABSkript, um ihre endgültigen Geschwindigkeiten zu finden:

%% Example triple impact (with 3D vectors)
% Three spheres impact at the same time. See Figure for their
% masses, positions and velocities before impact

% define unit vectors
o_ = [0;0;0];
i_ = [1;0;0];
j_ = [0;1;0];
k_ = [0;0;1];

R = 20;
r_1 = R*i_ 
r_2 = -R*i_
r_3 = R*tand(60)*j_

% Three possible contacts: 1*2, 2*3, 1*3
n_12 = (r_2-r_1)/norm(r_2-r_1)
n_23 = (r_3-r_2)/norm(r_3-r_2)
n_13 = (r_3-r_1)/norm(r_3-r_1)

% velocity vectors before impact
v_1 = o_;
v_2 = -1.0*n_12
v_3 = -2.0*n_13

v = [v_1;v_2;v_3]

% mass matrix
M = blkdiag(5.0*eye(3),4.0*eye(3),3.0*eye(3))

% contact pair matrix
Z = [-n_12, o_, -n_13; n_12, -n_23, o_; o_, n_23, n_13]
% Z =
% 
%     1.0000         0    0.5000
%          0         0   -0.8660
%          0         0         0
%    -1.0000   -0.5000         0
%          0   -0.8660         0
%          0         0         0
%          0    0.5000   -0.5000
%          0    0.8660    0.8660
%          0         0         0

% coefficient of restitution
eps = 0.5

% impact speeds
u_imp = Z.'*v

% impulses
J = -(1+eps)*inv(Z.'*inv(M)*Z)*u_imp
% J =
% 
%     1.7021
%     2.1702
%     4.6277

% velocity vector change
Dv = inv(M)*Z*J

% final velocity
v_final = v+Dv
% v_final =
% 
%     0.8032
%    -0.8015
%          0
%     0.3032
%    -0.4699
%          0
%     0.5904
%     0.2303
%          0


% check for error
actual = Z.'*(v+Dv);        %(relative speeds after impact) =
expected = -eps * u_imp;    % -eps*(relative speeds before impact)
err = actual-expected

% err =
% 
%   1.0e-015 *
% 
%    -0.1110
%    -0.6661
%    -0.6661

Im letzten Teil überprüfe ich die Ergebnisse gegen das Kontaktrecht und der Fehler ist ~1e-15.

Kannst du das für ein System aus drei Teilchen ausrechnen? Diese Analyse mag richtig sein, aber sie ist nicht transparent.
Sicher! Ich habe ein Beispiel mit drei Kugeln hinzugefügt. Ich habe ein MATLAB-Skript verwendet, um den Algorithmus zu demonstrieren und die Ergebnisse zu überprüfen.
Danke. Sie haben einige Annahmen eingebaut, denke ich. Entweder sind die Kollisionen augenblicklich oder die Kugeln sind identisch ... Ich bin mir nicht sicher, welche Bedingungen notwendig und welche ausreichend sind. Dies beantwortet die OP-Frage jetzt, da er uns gesagt hat, dass ungefähre Lösungen in Ordnung sind. Ich bin jedoch nicht davon überzeugt, dass dies eine allgemeine Lösung für den Fall ist, dass die Kugeln verformbar sind und nicht die gleichen mechanischen Eigenschaften haben. Es scheint mir, dass eine Kugel den Kontakt verlieren kann, während das verbleibende Paar in Kontakt bleibt.
In Ihrem Beispiel scheinen die Geschwindigkeiten der sich bewegenden Kugeln auf die Mitte der stationären Kugel gerichtet zu sein. Behandelt Ihr Algorithmus den allgemeineren Fall, wenn relative Geschwindigkeiten schief sind? Oder ist dies Teil einer Annäherung zur Vereinfachung, indem die Geschwindigkeiten auf einen gemeinsamen Punkt verschoben werden und angenommen wird, dass die Kontakte perfekt gleichzeitig sind? Wie Garyp ist mir nicht klar, was Ihre Begründung ist / welche Annahmen Sie treffen. ... Was ist das Umgangsrecht ?
Für einen 1D-Kontakt sagt das Kontaktgesetz
v R e l A T ich v e A F T e R = ϵ v R e l A T ich v e B e F Ö R e
@sammygerbil Ja, der Algorithmus ist generisch genug für jede Anfangsbedingung. Ich habe diese Richtungen willkürlich gewählt, aber in dem großen Vektor von vKomponenten können Sie beliebige Werte verwenden.v=[v1x,v1y,v2x,v2y,v3x,v3y,...,vnx,vny]
@garyp Ja, es gibt eine implizite Annahme von sofortigen Kollisionen (Problem mit harten Bällen). In der Praxis muss man die Simulation stoppen, wenn es zu Überlappungen kommt, und den Löser zum Zeitpunkt des ersten Aufpralls zurückverfolgen, die Impulse anwenden und dann die Simulation fortsetzen. Als Annäherung kann der Benutzer jedoch wählen, den Zeitschritt beizubehalten und sowohl Geschwindigkeiten als auch Positionen aufgrund des Kontakts anzupassen.
Das Zurückverfolgen zum 1. Aufprall, wenn es Überschneidungen gibt, macht Ihre Lösung mit meiner identisch, nicht wahr? Die Simulation geht dann nacheinander von einer 2-Körper-Kollision zur nächsten über, da es auf einer ausreichend kleinen Zeitskala keine gleichzeitigen Kollisionen gibt. ... Es ist nicht notwendig, sowohl Geschwindigkeit als auch Position anzupassen, oder? Wird die Position nicht ausreichen? Das Anpassen der Geschwindigkeit kann KE nicht erhalten, wenn ϵ = 1 .
@sammygerbil Das ist mir jetzt klar. Aber im wirklichen Leben sind einige Kontakte aufgrund von Flüssigkeitsfilmen "weich" (sie treten über längere Zeiträume auf), da kann man argumentieren, dass mehrere Kontakte gleichzeitig stattfinden. Wie gehen Sie außerdem mit einem Stapel Blöcke unter Schwerkraft um, die sich nicht bewegen?
@sammygerbil Ja und eigentlich nicht. Denken Sie an Newtons Wiegensituation . Die Kontakte finden gleichzeitig statt, da jeder Impuls von den benachbarten Stößen abhängt.
@ ja72 : Sowohl in Newtons Wiege als auch im Tower of Blocks wurden die Objekte sorgfältig in Kontakt gebracht und durch die Schwerkraft so gehalten. Ich bezog mich auf Starrkörperkollisionen in einer Simulation zufälliger Bewegung, wie z. B. Billard. Wenn 2 oder mehr Billardkugeln tatsächlich in Kontakt wären (z. B. beim "Break"), könnte der Aufprall der Spielkugel modelliert werden, indem ein sehr kleiner Abstand zwischen den einzelnen Kugeln eingeführt und dann die Abfolge von 2-Körper-Kollisionen berechnet wird - es ergibt dasselbe Ergebnis als Ihr Algorithmus (erwarte ich). ...
@ ja72 : ... Ja, echte Körper sind weich oder elastisch, wodurch Kollisionen nicht sofort erfolgen, sodass gleichzeitige Kontakte wahrscheinlicher sind. ... Ich behaupte nicht, dass meine Lösung die beste ist, nur dass sie genau und einfach ist. Siehe meinen Kommentar zu Andreas am Ende meiner Antwort, der von MyPhysicsLab.Com zitiert .
Hallo Leute und danke für all eure Hilfe dabei! Ich habe diese Methode jetzt ausprobiert und es schien zunächst genauso zu funktionieren wie meine vorherige Methode mit nur zwei Bällen. Aber leider fing ich an, in einigen Setups ein bisschen seltsames Verhalten zu bekommen. Zum Beispiel mit der V-Form, wo nur die untere Kugel einen Geschwindigkeitsvektor gerade nach oben hat. In diesem Fall bleiben die beiden oberen Kugeln in Kontakt und bewegen sich gerade nach oben ohne Geschwindigkeit seitwärts, was etwas seltsam erscheint. Vielleicht habe ich aber auch etwas falsch implementiert. Wie auch immer, ich werde dies weiter untersuchen, aber es sieht so aus, als würde ich wieder zu einzelnen Auswirkungen zurückkehren.
Eine andere Sache, könnte diese Methode vielleicht stattdessen zur Berechnung der Beschleunigung auf Körper beim Aufbringen von Kräften verwendet werden? Wenn sich zum Beispiel ein Stapel Kugeln unter dem Einfluss der Schwerkraft absetzt, werden die Kollisionen so ziemlich immer gleichzeitig sein? Ich habe mir die Lösung von myphysicslab mit der iterativen Minimierung der Kontaktpunktabstände angesehen, aber ich wurde mit der Komplexität von O (n ^ 4) ein wenig abgelehnt. Könnte dafür vielleicht stattdessen die Methode von ja72 verwendet werden?
FYI: Ich habe den Nur-Kontakt-Fall hier in einer neuen Frage formuliert: physical.stackexchange.com/questions/297829/…
@ ja72: Ich habe seitdem geantwortet. Ist meine Methode hier zur Lösung dieses 3-Körper-Kollisionsproblems korrekt? Dabei geht es um die gleichzeitige Kollision von 3 Bällen in 1D. Die vom OP verwendete Methode ähnelt Ihrer, aber bei den Berechnungen habe ich festgestellt, dass das Ergebnis von der Reihenfolge der Kollisionen abhängt, wenn diese nicht gleichzeitig auftreten. Deshalb frage ich mich, ob Ihre Methode realistische Ergebnisse liefert, da echte Kollisionen nicht gleichzeitig auftreten, wenn sie in einem ausreichend kleinen Maßstab betrachtet werden.

Leider muss ich Jonathan Wheeler zustimmen: Es gibt keine anderen Formeln, und Ihre aktuelle Methode ist wahrscheinlich die beste, die es gibt, sogar für nur 3 Bälle.

Bei Newton's Cradle ist das Ergebnis gleich, ob sich die Bälle berühren oder nicht. Eine leichte Lücke zwischen den Kugeln ergibt das gleiche Endergebnis. Dies deutet darauf hin, dass Ihr Ansatz, die Kollision mehrerer Körper in eine Folge von paarweisen Kollisionen aufzuteilen, das richtige physikalische Ergebnis liefert. In der Praxis ist dies fast immer möglich, denn wenn die Auflösung erhöht wird – also der Zeitschritt in der Simulation verkleinert wird – dann tritt zuerst eine paarweise Kollision auf.

Der Nachteil besteht, wie Sie bereits bemerkt haben, darin, dass dieses Verfahren möglicherweise übermäßige Berechnungen erfordert, da es zu vielen erneuten Kollisionen zwischen demselben Körperpaar kommen kann. Wenn die Simulation in Echtzeit angezeigt wird, könnte die gesamte Simulation merklich verlangsamt werden, wenn eine solche Kollision auftritt. Daher die Notwendigkeit einer Methode, um das Ergebnis ohne so viel Iteration zu bestimmen.

Außer in einigen Situationen, in denen eine gewisse Symmetrie vorliegt, gibt es (soweit mir bekannt) keine bekannte geschlossene Formel, die das Ergebnis auch für einen 3-Körper-Kollision angibt, vergleichbar mit Gleichungen für den 2-Körper-Kollision. Dies liegt daran, dass die gleichzeitige Kollision von 3 starren Körpern unbestimmt ist – dh es gibt nicht genügend Einschränkungen, um die Anzahl der Variablen anzupassen.

Wie Garyp vorschlägt, bietet die Einbeziehung elastischer Verformungen und Kräfte in das Modell mehr Einschränkungen, sodass das Ergebnis bestimmt werden kann. Das Modellieren verformbarer Körper erhöht jedoch die Komplexität des Programms, und aufgrund der Kopplung zwischen Kräften erfordern die resultierenden Gleichungen wahrscheinlich eine numerische Lösung durch Iteration. Es entsteht also das gleiche Problem einer erhöhten Rechenzeit.

Symmetrische Kollisionen von 3 identischen Kugeln umfassen (i) den kolinearen Fall und (ii) eine Kugel, die sich senkrecht zu den anderen 2 bewegt, die entweder stationär sind oder sich mit der gleichen Geschwindigkeit in die gleiche oder entgegengesetzte Richtung zur ersten bewegen. Solche symmetrischen Fälle werden jedoch bei einer Simulation vom Molekularbewegungstyp äußerst selten sein.

Fazit: Wenn Sie möchten, dass Ihre Simulation eine genaue Darstellung einer realen 3-Körper-Kollision ist, ist Ihre aktuelle Methode (Lösen aufeinanderfolgender paarweiser Kollisionen mit ausreichender Zeitauflösung) wahrscheinlich die effizienteste verfügbare. Die gleiche Methode behandelt alle Kollisionen mit mehreren Kugeln.


Nützliche Referenzen

Frage zu elastischen Stößen und Impulserhaltung / Energieerhaltung Starrkörperstoß
, 3 Kreise im Kontakt
Berechnung eines 3-Wege-Kreisstoßes

Forschungsartikel

Ein propagatives Modell des simultanen Aufpralls: Existenz, Einzigartigkeit und Konsequenzen für das Design Überlegungen
zum gleichzeitigen Aufprall
Machen Sie einen sinnvollen Aufprall: Modellierung simultaner Reibungskollisionen in räumlichen Mehrkörpersystemen
Newtons Wiege rückgängig gemacht: Experimente und Kollisionsmodelle für die normale Kollision dreier fester Kugeln ( Zugang über paywall )
The Two Ball Bounce Problem
A State Transition Diagram for Simultaneous Collisions with Application in Billard Shooting
Restitutionseigenschaften bei direkter zentraler Kollision dreier unelastischer Kugeln
Two Interpretations of Rigidity in Starr Body Collisions ( ResearchGate Listing with citations )

Aber es gibt Unmengen von Physik-Engines da draußen und Spiele wie Billard mit vielen gleichzeitigen Kollisionen. Wie machen Sie das? Mit einer ungefähren Lösung bin ich mehr als zufrieden.
Ich fürchte, ich weiß nicht, wie sie das machen. Sie können in Game Development SE nachsehen , wo sie eine bessere Vorstellung davon haben, was angemessen funktioniert. Stack Overflow sollte auch nützlich sein.
Aber die zweite Kollision kann beginnen, bevor die erste beendet ist. In diesem Fall ist das Problem ohne Kenntnis der Elastizität der Kugeln unbestimmt. Es scheint mir, dass Sie sich eine idealisierte Situation vorstellen können, in der die Kollisionen 1.) sequentiell und 2.) augenblicklich sind. Aber es sieht (für mich) nicht so aus, als ob diese Analyse verwendet werden kann, um eine Vorhersage über eine echte Kollision zu treffen. Darüber hinaus hängt in einer Simulation die Frage, wo und wann genau die Kollision stattfindet, von dem Zeitschritt und der Methode ab, die verwendet wird, um die Bewegung der Kugeln fortzupflanzen.
@garyp: Ich gehe davon aus, dass die Starrkörperkollisionen sofort erfolgen. Dann kann eine 2. Kollision nicht beginnen, bevor die 1. beendet ist. Wenn der Zeitschritt variabel ist und nach Bedarf vorübergehend klein genug gemacht wird, kann dies jede Schwierigkeit bei der Sequenzierung bewältigen. Wenn kollidierende Kugeln weit voneinander entfernt sind, kann der Zeitschritt wieder erhöht werden. Jeder Cluster von Kollisionen kann separat behandelt werden, je nach Bedarf mit unterschiedlichen Zeitauflösungen. Wenn 2-Körper-Kollisionen als ausreichend genau für die Vorhersage erachtet werden, ist dieses Verfahren gleich genau, da alle Kollisionen 2-Körper-Kollisionen sind.
Warum die Sache komplizierter machen als sie ist. Die Lösung ergibt sich aus der Anwendung des Kollisionsgesetzes, das gleichzeitig auf jedes Kontaktpaar angewendet wird. Das Ergebnis ist ein Gleichungssystem. Siehe meine Antwort.
@ ja72: Ich folge einer früheren Begründung, dass keine Kollisionen mit starren Körpern jemals perfekt gleichzeitig sind. Da jede augenblicklich ist, treten sie immer nacheinander auf, wenn Sie einen ausreichend kleinen Zeitrahmen betrachten. Dies mag rechenintensiv sein, aber ich denke, es ist einfach zu programmieren (da es alle Kollisionen als 2-Körper behandelt, sodass immer derselbe Code gilt) und genau. Ich bin sehr schlecht in Matrizenalgebra, daher kann ich Ihrer Lösung nicht gut folgen - obwohl sie beeindruckend aussieht. Eine Erklärung Ihrer Begründung wäre hilfreich (zumindest für mich).
Wir führen hier immer noch eine Simulation durch, und eine Simulation wird in jedem Zeitschritt mehrere "gleichzeitige" Kollisionen haben, unabhängig davon, wie klein der Zeitschritt ist. Ding von einem Turm aus gestapelten Kisten. In jedem Moment gibt es Impulse, die zwischen allen Boxen geteilt werden.
@sammygerbil Die Begründung ist, dass für jedes Kontaktpaar der ausgetauschte Impuls so sein wird, dass die endgültige Relativgeschwindigkeit ein negativer Bruchteil der anfänglichen Relativgeschwindigkeit ist. Es wird einfach als Gleichungssystem mit linearer Algebra ausgedrückt.
@AndreasZita: Als Antwort auf Ihren ersten Kommentar heißt es auf der Website myPhysicsLab.com : "Das Fazit: Obwohl es keine einzige perfekte Lösung gibt, funktioniert die serielle Kollisionsbehandlungsmethode für die meisten Zwecke ziemlich gut."

Dies ist nur eine Teilantwort, aber hoffentlich hilft es.

Es gibt zwei Prinzipien, die Sie beachten müssen, wenn Sie nach Bewegung suchen. Energieerhaltung und Impulserhaltung . Nämlich,

( M 1 v 1 2 + M 2 v 2 2 + M 3 v 3 2 ) Vor = ( M 1 v 1 2 + M 2 v 2 2 + M 3 v 3 2 ) nach

( M 1 v 1 + M 2 v 2 + M 3 v 3 ) Vor = ( M 1 v 1 + M 2 v 2 + M 3 v 3 ) nach

Im Allgemeinen ist das „Drei-Körper“-Problem ziemlich schwer zu lösen, und wenn Sie können, ist es vielleicht besser, die Kollision von drei Kugeln in drei Kollisionspaaren zu modellieren. Ich glaube nicht, dass das Lösen dieser Erhaltungsgleichungen oben zu einem eleganten formalen Wann führen wird N 3 .