Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich bin kein Physiker (die werden gleich kommen um alle meine Idee als Kindergarten über den Haufen zu werfen.)
Aber ich würde es so angehen.
Beim Aufprall guckst du , ob es extrempunkte zwischen den Flächen gibt. Das sind solche Punkte, wo die Kollidierenden Objekte überstehen.
An diesen Punkten kannst du per Hebelgesetze die Kraft berechnen die wirkt. Wenn der Hebel auf der Seite größer ist, wo noch platz nach unten ist, musst du die Kraft in einen Drehimpuls umwandeln (verwende ich den Begriff hier im richtigen Zusammenhang?).
Zu guter letzt musst du eigentlich noch die elastizität des Materials beachten. Wenn du zwei Pappschachteln aufeinander wirfst, bleiben die auch aufeinander liegen, wenn der Hebel nahezu ausgeglichen ist. Bei Marmorquadern sieht es anders aus. Das harte Material "reflektiert" die Energie und vergrößert so die Hebelwirkung auf der Seite wo der Würfel drunter ist.
So und jetzt die Physiker.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
ich habe hier zwei sehr interessante Artikel über genau deine Probleme, leider in Englisch.
Über Rotation allgemein und über Kollisionserkennung.
Les es dir mal durch, ist wirklich sehr hilfreich!
Zu deinem Problem: Du brauchst den Kollisionspunkt des Aufpralls relativ zum Massenschwerpunkt deines Objekts.
Dann rechnest du dir die stärke des Impulses aus, anscheindend hast du das schon gemacht, wenn du soweit bist.
Dann berechnest du die Geschwindigkeitsänderungen deiner beiden Körper. Den Impuls, den du auf Objekt1 und Objekt2 anwendest unterscheidet
sich dabei nur beim Vorzeichen, die Richtung ist entlang der Kollisionsnormale.
Das gleiche passiert auch mit der Rotation der beiden Körper, nur dass du jetzt das Kreuzprodukt zwischen dem Impuls und dem
Kollisionspunkt (relativ zu den Körpern) , verwendest.
Ein Beispiel, sagen wir dein Impuls ist P, dann ist:
Geschwindigkeit von Körper1 = Geschwindigkeit von Körper1 - Normale * P / Masse von Körper1
Geschwindigkeit von Körper2 = Geschwindigkeit von Körper2 + Normale * P / Masse von Körper2
Rotationsgeschwindigkeit von Körper1 = Rotationsgeschwindigkeit von Körper1 - (Relativer Kollisionspunkt1)x(Normale * P) / Tragheitsmoment1
Rotationsgeschwindigkeit von Körper2 = Rotationsgeschwindigkeit von Körper2 + (Relativer Kollisionspunkt2)x(Normale * P) / Tragheitsmoment2
Damit hast du deine Werte der Kollision. Ich hoffe ich konnte dir helfen, wenn nicht frag nochmal nach
Kann nicht aber auch die Geschwindigkeit des Körpers durch die Rotationsgeschwindigkeit des anderen Körpers verändert werden? Oder ergibt sich das aus dem Impuls?
Kann nicht aber auch die Geschwindigkeit des Körpers durch die Rotationsgeschwindigkeit des anderen Körpers verändert werden? Oder ergibt sich das aus dem Impuls?
Richtig. Den Impuls muss man vorher ausrechnen, da fließt auch die relative Geschwindigkeit der beiden Körper an dem Punkt mit ein.
klar kann es sein, dass es mehrere Kollisionspunkte gibt. Ich weiß nicht, ob es auch anders geht, aber die einfachste und einleuchtendste Variante ist wohl die, die Kontakte einzeln zu behandeln.
Ich mache da jedenfalls keine Ausnahme je nach Anzahl der Kontaktpunkte.
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.