Kollision zwischen einer "Feder" und einem Teilchen

Ich versuche gerade, eine einfache 2D-Physik-Engine zu erstellen, und ich muss nur wissen, wie man eine bestimmte Kollision löst.

Ich habe Partikel, und zwischen zwei beliebigen Partikeln können Federn verbunden sein. Diese Federn können eine variable Spannung und Länge haben. Nehmen wir nun an, ich habe ein weiteres Teilchen, das mit dieser Quelle kollidiert. Ich möchte diese Kollision so lösen, als ob sich die Feder nicht biegen könnte, wenn das Partikel darauf trifft, sondern sich einfach so verhält wie ein Stock in der realen Welt. Ich speichere die Geschwindigkeiten und Positionen aller Teilchen, nicht den Drehimpuls, also wie soll ich die Geschwindigkeiten aller Teilchen aktualisieren?

Anstelle eines Federelements benötigen Sie ein Balkenelement.
In meinem eigenen Code ist dies eine Feder, aber ich frage nur, wie die Kollision gelöst werden kann, wenn Sie die Feder in dem Moment, in dem sie kollidieren, als Balken dieser Länge behandeln würden.

Antworten (1)

Finden Sie den Massenmittelpunkt (CM) der beiden verbundenen Teilchen. Bestimmen Sie dann den Abstand ( r ) vom Massenmittelpunkt des Teils der Feder, an dem das dritte Teilchen auftrifft. Wenn Sie dann eine Kollisionszeit und -kraft während des Kontakts zulassen und davon ausgehen könnten, dass die Kollision reibungsfrei ist (dies kann für Punktpartikel und dünne Federn schwierig sein, bedeutet die Verzögerungszeit, dass sie möglicherweise gerade genug Zeit hat, um die andere Seite zu überqueren ), könnten Sie T = Fr verwenden (r ist der Abstand von CM zum getroffenen Teil), nehmen Sie an, dass die Kraftrichtung senkrecht zur Feder ist (reibungslos) und F = Ma, dann ist T = IA = Fr.

Für den Translationseffekt der beiden Teilchen: Verwenden Sie F = Ma, um die Beschleunigung des Massenschwerpunkts zu finden, a = F/M, wobei M die Summe der Massen zweier Federn ist, und wenden Sie dann die Beschleunigung auf die beiden Teilchen an (Beschleunigung ist die gleiche Richtung der Kraft, die senkrecht zur Feder ist).

Für den Rotationseffekt: Fr = IA (A ist die Winkelbeschleunigung, I ist das Trägheitsmoment: I = m1(r1)^2 + m2(r2)^2, r1 und r2 sind die Abstände der 2 Teilchen vom Massenmittelpunkt) , also A = Fr/I. Dann (sei Q1, Q2 die Tangentialbeschleunigung von Teilchen 1& 2) ist Q1 = r1*A, Q2 = r2*A. Wir können dann die Tangentialbeschleunigung auf die beiden Teilchen anwenden. Wenn der Teil des Federstoßes zwischen CM und Partikel 1 liegt, würde Q1 die gleiche Richtung wie die Kraft haben und Q2 wäre die entgegengesetzte Richtung. Wenn der Teil des Federeinschlags zwischen CM und Partikel 2 liegt, würde Q2 die gleiche Richtung wie die Kraft haben und Q1 wäre die entgegengesetzte Richtung.

Für das dritte Teilchen, das es getroffen hat: Nur F = ma. aber die Richtung dieser Kraft ist gleich, aber entgegengesetzt zur obigen Kraft (Gesetz der gleichen und entgegengesetzten Reaktion)

Was die zu verwendende Kraft betrifft, könnten Sie eine Kraft verwenden, die vom (nächsten) Abstand des dritten Teilchens zur Feder abhängt und aktiviert wird, wenn ein bestimmter Abstand erreicht ist (z. B. 0,5 Einheiten). Verwenden Sie dann möglicherweise eine zunehmende Kraft, wenn sie näher und näher kommen (wie ein springender Ball), sagen Sie zum Beispiel das Lennard-Jones-Potenzial, wobei F = -dU/dx.

Können Sie das letzte Bit bitte klären?
@2.71828-asy Das letzte Bit ist eine 1.
Für die Kraft zwischen dem dritten Teilchen und der Feder könnten Sie jede abstoßende Kraft verwenden, dh Federkraft: F = kx, elektronische Kraft: F = k/(x^2) oder ähnliches. Stellen Sie einfach sicher, dass es bei einem bestimmten Abstand Null ist (z. B. durch Hinzufügen einer Konstante), und erhöhen Sie die Kraft, wenn der Abstand kleiner wird. Die Kraft wird spürbar, wenn der Abstand zwischen dem Partikel und der Feder <= der angegebene Abstand ist. Wenn Sie beispielsweise „Federkraft“ verwenden, verwenden Sie F = k(x0-x), x0 ist der angegebene Abstand (z. B. 0,5) und x ist der Abstand des dritten Teils und der Feder.
k könnte alles sein, aber Sie möchten es vielleicht groß machen, wenn Sie möchten, dass es schneller springt. Wenden Sie dann die Kraft nur an, wenn der Abstand des 3. Partikels und der Feder <= 0,5 ist, und nicht, wenn sie weit entfernt sind.
Ich muss zugeben, dass dies nicht die perfekte Methode ist, da dies auf lange Sicht möglicherweise keine Energie spart. Das heißt, die anfängliche Gesamtenergie der Teilchen (die teilweise an ihren Geschwindigkeiten ersichtlich ist) zu einem Zeitpunkt, ist später in der Simulation möglicherweise nicht dieselbe. aufgrund der Näherung der Beschleunigung im Zeitintervall dt. Ich würde es vorziehen, die Technik der sofortigen Kollision zu verwenden, ohne auf die Berechnung von Beschleunigungen und Kräften angewiesen zu sein, aber leider kenne ich die Formeln dafür nicht, wenn ich Rotationsbewegungen verwende. Hoffentlich kann jemand diese Alternative anbieten.