RegistrierenRegistrieren   LoginLogin   FAQFAQ    SuchenSuchen   
2 dimensionale Kollision
 
Neue Frage »
Antworten »
    Foren-Übersicht -> Mechanik
Autor Nachricht
gbatt
Gast





Beitrag gbatt Verfasst am: 23. Aug 2013 19:37    Titel: 2 dimensionale Kollision Antworten mit Zitat

Meine Frage:
Hallo,
ich möchte mich an einer kleinen Physik Engine für C++( 2d) versuchen. Bin momentan ziemlich erschlagen von der notwendigen Theorie für dieses Thema.
Ich habe mir viele Artikel und Tutorials durchgelesen und verstehe jetzt
auch einigermaßen die Impulserhaltung und die SAT-Methode zur Kollisionserkennung. Doch gerade komm ich einfach nicht mit folgender
Problemstellung klar: Zwei Körper der Massen m1 und m2 mit unterschiedlichen Geschwindigkeiten in x und y( Polygone ) Richtung kollidieren.
Ich kann jetzt mit Hilfe des Kosinus und Sinus des entstehenden Winkels nach der Kollision die neuen Geschwindigkeitsvektoren errechnen( mit Hilfe der Impulserhaltung ), doch ich hab wirklich keine Ahnung wie groß die zwei entstehenden Winkel sind( also die Richtungen, in die sich die Körper nach der Kollision bewegen ). Wahrscheinlich ist es eine realtiv einfache Lösung, doch ich komm einfach nicht dahinter.
Ich hoffe ihr könnt mir weiterhelfen.

Gruß


Meine Ideen:
Ich geh davon aus, dass etwas mit dem Kollisionszentrum( Auftreffen von m1 und m2 ) zu tun hat.
Bruce



Anmeldungsdatum: 20.07.2004
Beiträge: 537

Beitrag Bruce Verfasst am: 23. Aug 2013 21:07    Titel: Antworten mit Zitat

O.K., fangen wir doch mal an mit der Diskussion anhand des skizzierten
Beispiels. Was soll deine Physik-Engine denn in einem solchen Fall
nach dem Stoß simulieren?

Dargestellt sind zwei Rechtecke, die so zusammen stoßen, daß die beiden
Schwerpunkte S1 und S2 nicht auf einer Linie liegen. Die Flächen, die sich
beim Stoß berühren, sollen hier parallel sein.

Gruß von Bruce



Bild2.png
 Beschreibung:

Download
 Dateiname:  Bild2.png
 Dateigröße:  6.72 KB
 Heruntergeladen:  600 mal

gbatt
Gast





Beitrag gbatt Verfasst am: 23. Aug 2013 21:14    Titel: Antworten mit Zitat

Naja, die Körper sollen eben relativ realitätsnah von einander wegdriften.
Wenn möglich eben auch mit einbezug Rotation, wozu ich aber momentan noch keinen Ansatz habe. In diesem Fall würde m1 bei einer relativ hohen
Geschwindigkeit in Rotation geraten.
Bruce



Anmeldungsdatum: 20.07.2004
Beiträge: 537

Beitrag Bruce Verfasst am: 23. Aug 2013 21:35    Titel: Antworten mit Zitat

Dann haben wir vor dem Stoß also den Gesamtimpuls der beiden Rechtecke,
der nach dem Stoß erhalten bleibt. Hinzu kommt nach dem Stoß eine Rotation
der beiden Körper um ihren jeweiligen Schwerpunkt und zwar so, daß der
Gesamtdrehimpuls nach dem Stoß der gleiche ist wie vor dem Stoß,
d.h. in dem Beispiel gleich Null.

Außerdem haben wir Energierhaltung, d.h. die Summe der kinetischen
Energien vor dem Stoß ist gleich der Summe der kinetischen Energien
der Schwerpunkte nach dem Stoß zuzüglich der Rotationsenergien um
die jeweiligen Schwerpunkte.

Alles klar grübelnd

Richtig interessant wird es, wenn die beiden Stoßpartner schon vor dem
Stoß rotieren und die Flächen nicht mehr parallel aufeinander treffen,
sondern eine Kante oder Ecke gegen eine Fläche titscht.
Was dann, insbesondere in 3D Teufel

Gruß von Bruce
gbatt
Gast





Beitrag gbatt Verfasst am: 23. Aug 2013 21:42    Titel: Antworten mit Zitat

OK, also wie gehe ich das Problem am besten an? Die Formeln
in den bisherigen Artikeln, die ich gelesen hab, waren erst einmal auf Englisch
und bedienen sich alle der Integralrechnung, die mir noch etwas Kopfzerbrechen bereitet grübelnd
dr.hallo



Anmeldungsdatum: 05.06.2013
Beiträge: 21

Beitrag dr.hallo Verfasst am: 24. Aug 2013 13:07    Titel: Antworten mit Zitat

Du hast es mit einem Exzentrischen Stoß zu tun. Was du suchst ist die Schwerpunktgeschwindigkeit und die Winkelgeschwindigkeit beider Körper nach dem Stoß. Die Stoßkräfte wirken entlang der Stoßnormalen. Die Stoßnormale steht senkrecht auf der Berührungslinie.

Das wird Aufwendig. Vor allem musst du ja auch noch Reibungseffekte berücksichten. Am Ende soll die Engine ja möglichst realistisch und mit beliebig vielen Objekten laufen. Ich glaube kaum, dass es dazu eine schnelle Lösung gibt.
gbatt
Gast





Beitrag gbatt Verfasst am: 24. Aug 2013 14:00    Titel: Antworten mit Zitat

Ich habe mir jetzt Chris Heckers Physik Tutorials zu starren Körpern angesehen. Ich komm auch noch weitesgehend mit, aber die Erklärungen über den Drehmoment und den gesamten Drehimpuls sind sehr schwer,
da er jede Formel, die er benutzt auch ableitet und eher mathematische Bezüge als praktische erstellt. Die Grundprinzipien sind mir klar, doch die angegebenen Formeln eher weniger. Besonders die Tatsache, dass jeder
Ansatz mit Vektoren arbeitet. Mir ist schon klar, das Geschwindigkeit,
Kraft, Beschleunigung etc im zweidimensionalen eine Richtung brauchen,
doch mir ein Ansatz lieber, den ich mit Hilfe von Skalaren berechnen kann
( dann eben mit Pythagoras und Steigung ). Ich weiß natürlich, dass es insgesamt kein einfaches Thema ist, ich wäre nur froh einen Einstieg zu finden. :help
Bruce



Anmeldungsdatum: 20.07.2004
Beiträge: 537

Beitrag Bruce Verfasst am: 24. Aug 2013 18:49    Titel: Antworten mit Zitat

Du bist wahrscheinlich nicht der erste, der eine sogenannte Physik-Engine
für Spiele/Simulationen schreibt. Warum nimmst Du nicht einfach eine
bereits vorhandene und getestete?

Dann muß Du "nur noch" die Unit-Tests schreiben, um sicherzustellen, daß
für deine Anwendungsfälle kein Murks herauskommt.

Wer eine Physike-Engine selbst programmieren will, sollte schon über die
entsprechenden mathematischen und physikalischen Kenntnisse verfügen.

Wie willst Du sicherstellen, daß Du sinvolle Ergebnisse erhälst, wenn Du
selbst nicht beurteilen kannst, was sein darf und was nicht?

Interessant wäre noch, für welche Anwendung Du deine Physik-Engine
schreiben willst.

Gruß von Bruce
Jayk



Anmeldungsdatum: 22.08.2008
Beiträge: 1450

Beitrag Jayk Verfasst am: 24. Aug 2013 19:02    Titel: Antworten mit Zitat

Ich bin auch nicht mehr so in der Materie, aber früher war Newton eine sehr beliebte Engine.
dr.hallo



Anmeldungsdatum: 05.06.2013
Beiträge: 21

Beitrag dr.hallo Verfasst am: 24. Aug 2013 20:12    Titel: Antworten mit Zitat

Du solltest dich mit der Vektorrechnung vertraut machen, bevor du anfängst, etwas aufwendigere Simulationen zu Programmieren und erst recht, wenn du wirklich vor hast, deine eigene Physikengine zu schreiben. Da ist es dann Grundvoraussetzung, nach meinem dafürhalten.

Eine z.Z. angesagte Physikengine ist z.B. auch Box2D.
Neue Frage »
Antworten »
    Foren-Übersicht -> Mechanik