AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kollisionen von Kreisen

Ein Thema von 3_of_8 · begonnen am 3. Aug 2008 · letzter Beitrag vom 4. Aug 2008
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: Kollisionen von Kreisen

  Alt 4. Aug 2008, 04:50
Frage mich bitte keiner mehr woher ich das habe, aber vor einigen Jahren hab ich irgendwo eine rein vektorielle Lösung entweder ge- oder erfunden, die ohne Trigonometrie und ohne Verschiebungen auskommt. Das einzig seltsame bei der Sache ist, ist dass der Gesamtimpuls mehr oder minder schwankt, im Mittel aber relativ stabil bleibt.
Ich habs nie produktiv im Einsatz gehabt, das Resultat schaut erstmal recht richtig aus, aber meine Hand würde ich dafür heute nicht mehr ins Feuer legen wollen. Ich hab grad auch fix versucht nachzuvollziehen nach welchen Regeln das läuft bzw. ob und wie man sich das Geometrisch herleiten könnte, aber schaut mal auf die Uhr...

Wichtig ist, dass das nur für den perfekt elastischen Stoß gleich großen Kugeln gilt, und Reibung wie sie für den Einfluss der Drehung interessant wäre wird nicht berücksichtigt. (In welchem Maße sie das tut ist übrigends völlig beliebig je nach Beschaffenheit der Kugeln. Da wird man keine allgemeingültige Aussage zu machen können.)

Prinzip:
V1 und V2 seien die Richtungsvektoren der kollidierenden Bälle.
S1 sei (V1-V2), und S2 ein dazu orthogonaler Vektor (S1.y; -S1.x)

Man bilde die 4 Vektoren E1, E2, K1, K2:
E1 = V1*S1*S1
E2 = V2*S1*S1
K1 = V1*S2*S2
K2 = V2*S2*S2
(Beachte: Die erste Multiplikation ist das Skalarprodukt, die zweite eine Skalierung der letzten Vektoren S1 bzw. S2)

Dann sind die neuen Richtungsvektoren V1' und V2'
V1' = E2 + K1
V2' = E1 + K2


Ich hab das Projekt von damals mal angehängt. Man verzeihe mir dabei den stümperigen Timer und sehr wahrscheinlich sehr suboptimalen Code - das war nur eine Konzeptstudie

Aber wie gesagt: Ich gebe keine Gewähr auf Richtigkeit. Wenn es aber korrekt ist, ist es ausgesprochen elegant.

Edit: Wenn man bei der Bildung von E* und K* nach der ersten Multiplikation noch durch die Länge von jeweils V1 bzw. V2 dividiert bleibt der Gesamtimpuls stabiler, und der Term erinnert schon deutlich eher an die Winkelberechnung zwischen Vektoren. Jedoch bleiben die Kreise im angehängten Programm auf diese Weise öfter ineinander hängen, wodurch man sie zusätzlich dann noch etwas zurecht schieben muss um das zu verhindern. Ist ja nicht unüblich bei Kollisionsklamotten in einem diskreten System.
Angehängte Dateien
Dateityp: zip balls_109.zip (205,6 KB, 21x aufgerufen)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz