Kollision zweier Kugeln im R²

bene2808

Aktives Mitglied
Hallo Forum,

schon seit Jahren programmiere ich an Simulationen für Gravitation. Dabei werden massebehaftete Kugeln dargestellt, die natürlich auch kollidieren können sollen. Für die Kollision verwende ich den physikalischen elastischen Stoß. Und hier mein Problem: Wenn sich zum Beispiel Planeten in der Simulation bilden, bewegen sie sich meiner Meinung nach (evtl. Einspruch erwünscht!) unrealistisch langsam aufeinander zu. Dies liegt nicht an zu schwacher Gravitation, sondern daran, dass der Impuls der Kugeln der Planeten, der jeweils auf den anderen Planeten gerichtet ist, von den internen Kollisionen abgeschwächt wird. Erhöhe ich allerdings die Impulserhaltung, bildet sich nie ein einigermaßen stabiles System.:(
Mit diesem Problem ärgere ich mich schon seit Ewigkeiten herum und es muss doch eine einfache brauchbare Lösung geben... Ich habe jetzt eine Demo geschrieben, die ich im Anhang hochgeladen habe. Probiert sie einfach mal aus! Die interessante Methode ist updateCircles(). Außerdem kann man noch die Konstante remainingImpulse verstellen.

Für jede Hilfe (auch nur Ideen) wäre ich dankbar!:)
 

Anhänge

  • CircleExample.txt
    9,2 KB · Aufrufe: 12

TheWhiteShadow

Bekanntes Mitglied
Dein Problem ist, dass du die Kugeln Zwangsdistanzierst. Daurch verfälschst du deren Potenzial. Atom-Simulationen arbeiten mit dem "Lennard-Jones-Potential".
Ohne diesen Codeblock verhält sich die Gravitation nartürlicher. Ich hab sogar einer fast stabilen trabanten erzeugt.^^
 

bene2808

Aktives Mitglied
Danke schon mal für die Antwort! :)

habe jetzt das Zwangsdistanzieren ausgeschaltet, aber dann entsteht auch unnatürliches Verhalten. Die Kugeln kleben manchmal aneinander. In größeren Ansammlungen entstehen außerdem Extrema, sodass diese "Planeten" explodieren oder Kugeln von sich schießen. Das liegt vermutlich daran, dass die Kollisionsformel nicht optimal funktioniert, wenn die Kugeln sich überschneiden. :confused:

Vom Lennard-Jones-Potential habe ich jetzt auch schon mehrmals gehört, eine Versuchsimplementierung hat aber auch zu viel zu starker Abstoßung geführt. Dabei hat sich bei manchen Kollisionen auch extreme Beschleunigung entwickelt, die die Kugeln dann aus dem System herauskatapultiert hat...o_O

Also wenn es bei dir klappt, dann zeig doch mal bitte deinen Code, das wäre mir echt eine große Hilfe :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Kollision zwischen ImageIcon und Rechteck Allgemeine Java-Themen 1
J Kollision von zwei Kreisen Allgemeine Java-Themen 15
R Dreieck-Dreieck Kollision (triangle-triangle intersection) Allgemeine Java-Themen 11
L Kollision mit Wand Allgemeine Java-Themen 4
K Kollision im 3D Raum Allgemeine Java-Themen 3
V 2D Kollision -> Abstossung Allgemeine Java-Themen 5
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
C Gemeinsame Oberklasse zweier Generics Allgemeine Java-Themen 10
Tausendsassa Input/Output Problem mit der gleichzeitigen Ausgabe zweier Threads Allgemeine Java-Themen 8
T Parallelisierung zweier BigInteger-Funktionen Allgemeine Java-Themen 6
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
I Vergleich zweier Felder Allgemeine Java-Themen 3
F Vergleich zweier Listen Allgemeine Java-Themen 4
R Objektsynchronisierung zweier Listen?!?! Allgemeine Java-Themen 2
data89 [Kurze Frage] Ähnlichkeit zweier Strings ermitteln Allgemeine Java-Themen 19
J Endlosschleife durch wechselseitigen Zugriff zweier Klassen? Allgemeine Java-Themen 2
P gegenseitige Methodenaufrufe zweier Klassen Allgemeine Java-Themen 14
MQue Verbindung zweier Klasse Allgemeine Java-Themen 13
D Generalisierungsbeziehung zweier Klassen Allgemeine Java-Themen 5
D Seltsame Ausgabe beim zusammenführen zweier Dateien Allgemeine Java-Themen 14
J vergleich zweier datenstrukturen Allgemeine Java-Themen 6
Z Verknüpfung zweier Klassen! Allgemeine Java-Themen 2
N Vergleich zweier Hashtable / mehrere Enumerations Allgemeine Java-Themen 7
M run()-Code zweier Threads strikt abwechselnd ausführen Allgemeine Java-Themen 7
J Anzahl von Möglichkeiten zur Verteilung von Kugeln in Behälter Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben