Laden...

Dezentraler Stoß zweier Billiardkugeln

Erstellt von Alphawolf1988 vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.942 Views
A
Alphawolf1988 Themenstarter:in
68 Beiträge seit 2008
vor 14 Jahren
Dezentraler Stoß zweier Billiardkugeln

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! 😁

1.130 Beiträge seit 2007
vor 14 Jahren

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

6.911 Beiträge seit 2009
vor 14 Jahren

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!"

A
Alphawolf1988 Themenstarter:in
68 Beiträge seit 2008
vor 14 Jahren

Perfekt! Ich danke dir für deine Hilfe!

MFG Wolf

Wer zuerst kommt malt zuerst, wer danach kommt malt drüber! 😁