Elastischer Stoss in zwei Dimensionen?
Hallo, ich arbeite gerade an einem Programm das mehrere Bälle simuliert die voneinander abprallen. Das ging alles gut bis ich probiert habe Bälle mit verschiedenen Gewichten und Geschwindigkeiten einzubauen. Ich habe eine Formel gefunden um die Geschwindigkeiten der Bälle auszurechnen. Aber ich finde nichts was mir den Abprall-Winkel geben würde. Bisher haben die Bälle einfach die Gegenseitigen "Directions" übernommen, aber das geht nur bei gleichschweren/schnellen Bällen. Vielleicht weiss jemand von euch weiter.
Ich vermute mal ich muss was mit Vektoren machen, bin bis jetzt aber auf keine vernünftige Lösung gekommen.
Hier der bisherige Code. Wir benutzen eine vereinfachte Version von Python in der Schule. Jeder Ball hat die Eigenschaften x, y, Richtung(in Bogenmass), Geschwindigkeit und Gewicht.
2 Antworten
Uh, realistische Kollisionssimulation ist nicht ganz einfach:
https://disneyanimation.com/publications/reflections-on-simultaneous-impact/
(Brauchst du nicht verstehe. Da habe ich auch meine Schwierigkeiten, schon da das Paper leider an einigen Stellen nicht erklärt, wofür beispielsweise Variablen denn stehen sollen.)
Bei einer Kollision dürften die Vektoren der beteiligten Objekte miteinander verrechnet werden, so, dass sich ein Gesamtimpuls ergibt, der dann je Objekteigenschaften auf die Objekte aufgeteilt wird, so, dass sich daraus neue Bewegungsvektoren ergeben.
Den Gesamtimpuls zu berechnen dürfte trivial sein. Das Aufteilen ist das komplizierte. Da wirst du vermutlich irgendwie approximieren wollen.
Für lediglich zwei Objekte sollte das mit den Formeln gehen, die du bereits verwendest. Die Geschwindigkeit ist dabei schlicht als Vektor zu betrachten, der Impuls ebenso, wenn ich mich nicht täusche.
Du hast Punktmassen angenommen. Das ist immer ein zentraler Stoß. Der nicht-zentrale Stoß (Billardkugeln) berücksichtigt auch Drall und Reibzahl.
Danke für die schnelle Antwort, ich habe das Paper angesehen aber nicht viel davon verstanden(ausserdem brauche ich so oder so nur die Formeln für zwei Objekte, nicht mehrere). Aber es funktioniert wenn man den einen Ball als Mittelpunkt vom Koordinatensystem setzt(So ergibt es sich dass der eine Ball steht und dann ist es um einiges einfacher die Kräfte auszurechnen). Danach addiere ich die beiden Kräfte(in Form von Vektoren... bla bla) und habe dann den richtigen Bewegungsvektor.