Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Dezentraler Stoß zweier Billiardkugeln
Alphawolf1988
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

Dezentraler Stoß zweier Billiardkugeln

beantworten | zitieren | melden

Hallo liebe Community!

Ich beschäftige mich derzeit mit Stößen zwischen 2 Billiardkugeln, und möchte dies implementieren als Test. Nun habe ich einen Code Aussschnitt gefunden, welcher die neuen Richtungsvektoren beider Kugeln berechnet, jedoch komme ich einfach nicht dahinter wie man auf diese Formel kommt. Vllt. hat jemmand von euch Erfahrungen damit.


//Abstandsvektor berechnen
                //Der Abstandsvektor (dx,dy) ist der Vektor vom Mittelpunkt der Kugel 1
                //zum Mittelpunkt der Kugel 2
                Vector3 range = physic1.Position - physic2.Position;

                // Länge von Range aber ohne Wurzel!
                double rangeLength = range.Length() * range.Length();

                //Skalarprodukt aus Richtungsvektor Kugel 1 und Abstandsvektor berechnen
                double v1d = physic1.Speed.X * range.X + physic1.Speed.Y * range.Y + physic1.Speed.Z * range.Z;

                //Skalarprodukt aus Richtungsvektor Kugel 2 und Abstandsvektor berechnen
                double v2d = physic2.Speed.X * range.X + physic2.Speed.Y * range.Y + physic2.Speed.Z * range.Z;

                //Für beide Kugeln nach der Formel die neue Richtung berechnen
                physic1.Speed = new Vector3((float)(physic1.Speed.X - range.X * (v1d - v2d) / rangeLength),
                                                (float)(physic1.Speed.Y - range.Y * (v1d - v2d) / rangeLength),
                                                (float)(physic1.Speed.Z - range.Z * (v1d - v2d) / rangeLength));

                physic2.Speed = new Vector3((float)(physic2.Speed.X - range.X * (v2d - v1d) / rangeLength),
                                                (float)(physic2.Speed.Y - range.Y * (v2d - v1d) / rangeLength),
                                                (float)(physic2.Speed.Z - range.Z * (v2d - v1d) / rangeLength));

Vielen Dank

MFG Wolf
Wer zuerst kommt malt zuerst, wer danach kommt malt drüber!
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1158
Herkunft: Norddeutschland

beantworten | zitieren | melden

http://www.billardgl.de/technik_physik-de.html
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7559
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

über die Impuls- und Energieerhaltungssätze. Siehe auch Stoß.


mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Alphawolf1988
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

beantworten | zitieren | melden

Perfekt! Ich danke dir für deine Hilfe!

MFG Wolf
Wer zuerst kommt malt zuerst, wer danach kommt malt drüber!
private Nachricht | Beiträge des Benutzers