Kollision zweier Kugeln... Wo ist Newton ??

Kr0e

Gesperrter Benutzer
Hallo!

Ich muss/will zwei Kugeln kollidieren lassen. Kollisionserkennung mache ich mit der Differenzglecihung der beiden Bewegungsgleichungen und löse sie nach r1+r2 auf. Klappt wunderbar auch sehr schnelle Kugeln entgehen meinem Algorithmus nicht. Den Stoß berechne ich nach Newton und seinen altmodischen und leider unrelativen Gleichungen. Mein Problem ist nun die Rotation!

Ich dachte erst, hmm... Ist ja praktisch betrachtet auch nur ein Stoß in orthogonaler Richtung.. Mein Prof hat zwar gesagt, dass Rotation nicht gefordert ist aber mich interessiert das, vorallem weil ich damals bei meiner Facharbeit an ein ähnlioches Problem gestoßen bin...

Mein Problem ist einfach, dass ich zu Rotationen wenig bei Google finde... Stöße und so werden häufig im Zusammenhang mit Snookergames erläutert und jeder der Physik in der Schule hatte, sollte das sowieso können, aber die Rotation wird in der Schule leider selten 1. vektoriell und 2. mit verschiedenen Massen oder Reibungskoeffizienten gemacht.

Ich vermute, dass man sich eine Rotationübertragung ähnlcih wie einen Stoß vorstellen könnte und daher evt. mit den gleichen Formeln berechenbar sein könnte, wie 0815 Stöße :D. Halt nur in Abhängigkeit der Reibungskoeffizienten etc...

Naja, ich steh etwas auf dem Schlauch, nicht zuletzt weil mir hier etwas physikalisches Wissen fehlt...

Vlt. ist ja hier iwer mit Physikkenntnissen =)!!
Guten Rutsch morgen ;)

Gruß,
Chris
 
V

vanny

Gast
So ganz ist mir dein Vorhaben noch nicht klar, "2 Kugeln kollidieren lassen.." wie beim Snooker oder 2 Pistolenkugeln in der Luft oder die KlickKlack Dinger am Pendel? ^^

Die Möglichkeiten sind dort zu verschieden, um dir da konkret unter die Arme greifen zu können denke ich.

Gruß Vanny

Mein Prof hat zwar gesagt, dass Rotation nicht gefordert ist aber mich interessiert das...
seltene und lobenswerte Einstellung... ist leider viel zu oft Mangelware:toll:
 

Kr0e

Gesperrter Benutzer
Hi Vanny!

Danke für dein Interesse, mir zu helfen =). Es geht einfach um Kugeln im 3 dimensionalen Raum mit verschiedenen Radien. Diese Kugeln können beliebige Vektorgeschwindigkeiten haben und beliebige Massen. Daher könnten sie in jeglicher Situation kollidieren.

Der Impuls Austausch in Geschwindigkeitsrichtung ist kein Problem wie gesagt, dafür gibts ja diese tollen Newtonschen Gleichungen. Mein Gedanke ist einfach, wie die Rotation jeder Kugel die jeweils andere Kugel bei einer Kollision beeinflusst.

Also z.b. eine Kugel mit Spin die auf eine ruhende Kugel prallt: Hierbei könnte ich mir vorstellen, dass der Spin ggf. die Geschwindigkeit/Richtung zusätzlich beeinflusst im echten Leben... Kennt man ja vom Billard im echten Leben... Aber mein Problem ist, dass ich einfach keine Formel finde, die die GEschwindigkeit mit Rotation beschreibt... Und einfach selbst drauf los denken halte ich für gefährlich, da dies ohne jegliche wissenscahftliche Grundlage wäre...


Danke!

Gruß,
Chris


Ich vermute das Grundproblem ist einfahc, dass mir hier etwas Physikalisches Wissen fehlt. Ich hab gestern mal bei anderen Engines "gespickt" bzw. deren Docs mal z. T. überflogen. Überall ist die Rede vom Lösen von Differentialgleichungen und speziellen numerischen Verfahren um dies algorithmisch zu lösen. Dummerweise kann ich mir nicht vorstellen, inwiefern Differentialgleichungen mit Bewegungsglecihungen zu vereinbaren sind.... Ich denke, dass ist auch der Grund, warum mein Prof. dies nicht fordert... Der Komplexitätsgrad wächst anscheinend enorm sobald Rotation oder sogar eine NICHT-Kugelform als Objekt benutzt wird... Rigid Body Dynamics... Hm. Lesen Lesen Lesen...
 
Zuletzt bearbeitet:

Illuvatar

Top Contributor
Hi,

kleine Vorbemerkungen:
- Was meinst du mit Newtons "unrelativen" Gleichungen? Dass die nicht relativistisch sind? Du willst das aber nicht ernsthaft relativistisch rechnen, oder? :D
- Wenn du Spin schreibst, meinst du Drehimpuls ;)

Ok. Ich denke, das große Problem ist folgendes:
Die übliche Berechnung von so einem Stoß verwendet (nichts anderes als) Energie- und Impulserhaltung. Für die makroskopischen Kugeln gelten diese Erhaltungssätze aber nur unter Vernachlässigung der Reibung. Vernachlässigt man die Reibung, hat die Rotation aber leider keinerlei Einfluss. Das sieht man erstens daran, dass die Rotation der Kugel keinen Einfluss auf den Gesamtimpuls der Kugel besitzt und also die komplette Rechnung von dem Stoß gleich bleibt, zweitens werden die Kugeln auch nach dem Stoß genauso rotieren wie vorher, denn: Die Moleküle der Kugeln rotieren ja parallel aneinander vorbei, und das kann nur Auswirkungen haben, wenn man Reibung miteinbezieht.
Will man nun aber die Reibung mitnehmen, kann man die ganze einfache Rechnung mit Erhaltungsgrößen in die Tonne kloppen. Es gibt sicherlich trotzdem Modelle mit denen man sowas rechnen kann (irgendwie kriegen Physikengines das ja hin), die können aber sicher schnell beliebig kompliziert werden - insbesondere da Physikengines nicht nur mit Kugeln rechnen können wollen...

Ich hätte noch eine relativ einfache Idee, die möglicherweise schon befriedigende Resultate bringen könnte - sicher bin ich da aber nicht:
Zwei Kugeln bewegen sich aufeinander zu, jede hat einen bestimmten Impuls und Drehimpuls. Man könnte jetzt den Stoß unendlich kurz modellieren, dann würden (denke ich) die Erhaltungssätze weiterhin gelten - d.h. an den Richtungen, die rauskommen, ändert sich nichts.
Kennt man aber den Berührpunkt kann man aus dem Drehimpuls die Rotationsgeschwindigkeit der beiden Kugeln an diesem Berührpunkt berechnen. Dann könnte man jeweils eine (deltaförmige) Kraft annehmen, die proportional zu dieser Rotationsgeschwindigkeit und zu einer Materialkonstante (Reibung) ist. Die führt zumindest zu einer Änderung der Drehimpulse.
Man hätte dann nach actio=reactio 4 solche Kräfte schätze ich, an jeder Kugel zwei.

Wenn du willst kann ich dazu noch mehr schreiben.
 

Kr0e

Gesperrter Benutzer
Hi! Danke für deine Antwort!

Also das mit der Rotationgeschwindigkeit und Drehimpuls am Berührpunkt ist kein Problem, ich hatte eine ähnlcihe Idee und dass man noch einen Reibungskoeffizienten braucht, damit überhaupt Rotation übergeben wird, ist natürlich klar.

Problematisch stelle ich mir die Tatsache vor, dass in diesem Modell die Bewegungsimpulse unangetastet bleiben würden. (Oder hab ich jetzt was falsch verstanden?) Sprich Drehung würde in diesem Modell zwar ggf. korrekt übergeben werden an die jeweiligen Stoßpartner aber ich glaube, dass zwei Objekte mit Reibungkoeffizienten != 0 bei der Übergabe des Drehimpulses auch die Bewegungsimpulse verändern... Vlt. hab ich aber deine Idee auch noch niucht exakt verstanden...
 

Kr0e

Gesperrter Benutzer
Hat sich erledigt, ich werde nochmal von unten anfangen und mich mal in Rigid Body Dynamics einlesen. Es fehlt mir hier Wissen und langsam bin ich richtig itneressiert!

Danke für die Hilfe soweit =)!
 

Marco13

Top Contributor
Ich wollte gestern (d.h. heute morgen) schon was dazu schreiben, wirklich "fundiertes" könnte ich aber nicht sagen :oops: Also: Alles nicht so ernst nehmen, was ich schreibe.

Vorneweg: Ein bißchen was steht dazu z.B. in "An Introduction to Physically Based Modeling: Rigid Body Dynamics" http://www.cs.cmu.edu/~baraff/sigcourse/notesd1.pdf (von der Siggraph 97) - es gibt aber auch noch neuere, z.B. die auf Seiten wie CS7301-002 Physics-Based Modeling and Simulation verlinkten.

Ich denke aber, dass die Vernachlässigung der Reibung nicht zuletzt aus der Tatsache resultiert, dass bei "üblichen" Kugel-Kollisionen die Kollisionszeit als unendlich kurz angesehen wird: Die Kugeln treffen aufeinander, und es wird "instantan" ein Impuls von der einen auf die andere abgegeben. Tja. Wie lange berühren sich zwei Billardkugeln, die aufeinanderprallen? :bahnhof: Gerechtfertigt und modelliert wird das AFAIR mit Formeln, die aus sowas wie Elastic collision - Wikipedia, the free encyclopedia hergeleitet sind.

Ich könnte mir vorstellen, dass ein Ansatz zur Einbeziehung der Reibung darin bestehen würde, dass man nicht die Kugel über Zentrum+Radius beschreibt, sondern tatsächlich die Auswirkung der Kollision auf den Kollisionspunkt.
Die "einfache" Modellierung ist ja:
- Wenn eine Kugel auf eine ruhende Kugel trifft, werden Kraftstöße auf die Kugeln angewendet, und ihre Bewegungsrichtungen ändern sich.
- Wenn eine rotierende Kugel auf eine ruhende Kugel trifft, werden Kraftstöße auf die Kugeln angewendet, und ihre Bewegungsrichtungen ändern sich - die Rotation spielt keine Rolle!

Um die Reibung zu berücksichtigen, könnte man sagen:
- Wenn eine rotierende Kugel auf eine ruhende Kugel trifft, werden Kraftstöße auf die sich berührenden Punkte der Kugeloberflächen angewendet. Die Richtung und Stärke (bzw. Verteilung) dieser Kraftstöße hängen dabei natürlich von der Rotationsgeschwindigkeit und Masse, der Dauer des Kontaktes (d.h. auch der Elastizität der Objekte) und dem Reibungskoeffizienten ab. Das wäre dann der allgemeine Fall, der nicht nur auf Kugeln, sondern auf beliebige Objekte angewendet werden könnte (FALLS er überhaupt physikalisch Sinn macht :oops: ) und solche interessanten Formelmonster generiert wie die in http://www.java-forum.org/spiele-multimedia-programmierung/122625-3d-spiel.html#post792697 gezeigten :D
 

Kr0e

Gesperrter Benutzer
Danke Marco!

Lustig, den ersten Link hab eben heute Nachmittag iwann auch gefunden =). Sehr interessant, vorallem der Teil über Rigid Body Dynamics.

Eine Sache hatte ich total übersehen bzw. nicht bedacht. Wenn man Positionen von Objekten altmodisch aktualisiert (also alle 20 ms den geschwindigkeitsvektor addiert), so hat man das Problem, das die Bewegung der Objekte nur nährungsweise bestimmt wird, sprich das Objekt selbst keine wirklichen Flugbahn folgt sondern eher einer Vektorkette was bei Kollisionerkennung problematisch werden könnte..

Ich hab den ersten Artikel, der schon recht lang war, inzwischen durch und versuche mich an den Partikelsystem und der Integration der Beweungsgleichungen. Das Verfahren, dass dort erklärt wird, nennt sich Eulerverfahren. Das ist so simpel, dass es genau war, was ich intuitiv bislang benutzt habe... Nämlich einfach alle 20 ms z.b. den Vektor addieren, aber dies ist natürlcih viel zu ungenau und es gibt bessere und vorallem schnellere Verfahren, in die ich mich nun einlesen muss erstmal.


Alles in allem viel Aufwand und ein großer Unterschied zwischen einer simplen Animation und einer physikalischen Simulation.

Gruß,
Chris
 

usrr

Bekanntes Mitglied
[QUOTE Kr0e ]
Problematisch stelle ich mir die Tatsache vor, dass in diesem Modell die Bewegungsimpulse unangetastet bleiben würden. (Oder hab ich jetzt was falsch verstanden?) Sprich Drehung würde in diesem Modell zwar ggf. korrekt übergeben werden an die jeweiligen Stoßpartner aber ich glaube, dass zwei Objekte mit Reibungkoeffizienten != 0 bei der Übergabe des Drehimpulses auch die Bewegungsimpulse verändern... Vlt. hab ich aber deine Idee auch noch niucht exakt verstanden...
[/QUOTE]

Richtig. Wie bereits erwähnt wird Reibung benötigt um einen Drehimpuls auszutauschen. Die Reibungskraft ist proportional zur Normalkraft, d.h. die Kugeln müssen mit einer Kraft gegeneinander gedrückt werden. Dadurch wird ein Impuls übertragen.

Wie weit bist du mit deiner Physikengine? Ich beschäftige mich gerade mit dem Thema (nur Oberflächlich) und habe interesse an Infos zum Thema.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Kollision Spiele- und Multimedia-Programmierung 5
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
N Kollision von zwei ImageIcons Spiele- und Multimedia-Programmierung 8
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
J Kollision (libgdx) Spiele- und Multimedia-Programmierung 2
S Kollision Spiele- und Multimedia-Programmierung 2
J Kollision genau erkennen mit intersects Spiele- und Multimedia-Programmierung 27
K a* kollision der einheiten Spiele- und Multimedia-Programmierung 3
S Probleme bei Breakout - Brick kollision Spiele- und Multimedia-Programmierung 2
F Rechteck Kollision Spiele- und Multimedia-Programmierung 10
H 2- D Kollision Spiele- und Multimedia-Programmierung 14
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
O Kollision Polygon und Rechteck Spiele- und Multimedia-Programmierung 2
S Pacman Kollision von Münzen und Mauern Spiele- und Multimedia-Programmierung 11
P Gridpane Kollision Spiele- und Multimedia-Programmierung 3
Androbin Kollision zwischen Raster und Nicht-Raster Spiele- und Multimedia-Programmierung 2
L Kollision soll nur an oberer Seite (Breite) möglich sein Spiele- und Multimedia-Programmierung 6
Hercules Kisten Kollision Spiele- und Multimedia-Programmierung 2
S 3D-Kollision mit zwei ArrayLists Spiele- und Multimedia-Programmierung 7
T Pixelgenaue Kollision Spiele- und Multimedia-Programmierung 5
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
S Kollision tile-based 2D Plattformer Spiele- und Multimedia-Programmierung 2
D Greenfoot Kollision Spiele- und Multimedia-Programmierung 5
D Kollision verhindern Spiele- und Multimedia-Programmierung 2
R Frage zur Kollision Spiele- und Multimedia-Programmierung 5
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
C Kollision zwischen 2 Kreisen Spiele- und Multimedia-Programmierung 3
Helgon Kollision von jeder Seite des Blocks Spiele- und Multimedia-Programmierung 3
Fab1 Kollision die 100ste Spiele- und Multimedia-Programmierung 5
D Jump'n'run Kollision bei Blöcken Spiele- und Multimedia-Programmierung 10
P PingPong Spiel - Kollision Spiele- und Multimedia-Programmierung 2
C Bitmaske und Kollision Spiele- und Multimedia-Programmierung 2
J Spielprogrammierung mit bewegung und kollision Spiele- und Multimedia-Programmierung 24
S Kollision Kreis Rechteck Spiele- und Multimedia-Programmierung 8
aze Java3D: Gegenstände aufeinander zubewegen ohne Kollision Spiele- und Multimedia-Programmierung 4
baddestpoet pixelgenaue Kollision Spiele- und Multimedia-Programmierung 4
S Kollision in 2D Spiele- und Multimedia-Programmierung 12
B Gedrehte Rechtecke Kollision Spiele- und Multimedia-Programmierung 4
J Kollision mit Block (Wand) Spiele- und Multimedia-Programmierung 11
C Kollision in Java3D Spiele- und Multimedia-Programmierung 4
J Kollision von Objekten Spiele- und Multimedia-Programmierung 7
M Asteroids Clone: Kollision zwischen Schuss und Feind Spiele- und Multimedia-Programmierung 13
F Bewegung/Kollision von Objekten auf Tastendruck Spiele- und Multimedia-Programmierung 6
Z Kollision Spiele- und Multimedia-Programmierung 3
F Kollision für Arkanoid Spiele- und Multimedia-Programmierung 2
N Kollision abfragen Spiele- und Multimedia-Programmierung 3
K Sprites / Kollision Spiele- und Multimedia-Programmierung 3
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13
so_ein_Komischer Simple Kollisionskontrolle zweier jLabels Spiele- und Multimedia-Programmierung 5
S Einen Dialog zweier Personen erstellen (Textadventure) Spiele- und Multimedia-Programmierung 4
C dezentraler Stoß zweier Kugeln Spiele- und Multimedia-Programmierung 3
TheSorm Kollisionsreaktion 2er Kugeln im 2D Raum Spiele- und Multimedia-Programmierung 4
K Kugeln werden nicht unsichtbar Spiele- und Multimedia-Programmierung 23
P Billard, kugeln berechnung Spiele- und Multimedia-Programmierung 2
Z Kugeln aufgrund von Daten aus einem Array verschieben Spiele- und Multimedia-Programmierung 2
G Kugeln schießen Spiele- und Multimedia-Programmierung 3
B Kugeln verschieben (Vektoren) und Schnitt prüfen Spiele- und Multimedia-Programmierung 12
E JLabel zum anklicken machen? Kugeln selektieren? Spiele- und Multimedia-Programmierung 21
K Kugeln und Zylinder zeichnen Spiele- und Multimedia-Programmierung 4
DEvent ein kleines Billiard Spiel und die bewegungen der Kugeln Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben