Wie kann man den Effekt darstellen, wenn starre Körper miteinander verbunden werden?

Ich habe 2 starre Körper (b1, b2), wenn ich einen miteinander verbunden habe (als ob sie miteinander verbunden wären), wie man den b1-Effekt auf b2 und den b2-Effekt auf b1 darstellt

Geben Sie hier die Bildbeschreibung ein

Gibt es ein GESETZ, das die Position/Orientierung des anderen Körpers beeinflusst?

Anmerkungen :

  • Ich verwende Quaternionen zur Orientierung
  • Ich möchte sie nicht als einen Körper behandeln
  • Ich habe nur primitive Formen (Kasten, Kugel, ...) zum Verknüpfen.
Warum behandeln Sie sie nicht einfach als einen einzigen großen starren Körper?
Die Idee, dass ich eine Physik-Engine mache, die Körper als Primitive behandelt (Kasten, Kegel, Kugel, ...). Wenn ich sie also als einen einzigen starren Körper behandle, muss ich eine neue Kollisionsauflösungslogik für diesen neuen komplexen Körper hinzufügen

Antworten (4)

Die gesuchten Gesetze sind Impulserhaltung und Drehimpulserhaltung. Wenn man die beiden Körper zusammenklebt, müssen trotzdem beide Gesetze erfüllt sein (inelastische Effekte vernachlässigt). Am Ende haben Sie ein zusammengesetztes einzelnes Objekt. Mit dem Parallelachsensatz ( Wikipedia ) kannst du das Massenträgheitsmoment und zusammen mit dem Massenschwerpunkt die gesamte Bewegung deines zusammengesetzten Körpers berechnen. Sie müssen die Kollisionslogik nicht vollständig ändern, sondern eine Kugel/Box erstellen, die Ihr gesamtes Objekt enthält, und diese zum Testen auf Kollisionen verwenden.

Eine Alternative, um die beiden starren Körper zu verbinden, sind Federn, wie dmckee betonte, und dieser Ansatz ist in vielen Physik-Engines (Brückenbauspiele, World of Goo) recht erfolgreich. Auch Flüssigkeiten lassen sich mit wenigen, über Federn verbundenen harten Tropfen modellieren.

Ich spreche nicht von Kollisionserkennung, ich spreche von Kollisionsauflösung, die von Contact Normal abhängt, was geändert wird, habe ich recht?
@MhdSyrwan: Die Kontaktnormale wird geändert, unabhängig davon, wie Sie die Körper verbinden. Für die Berechnung des Stoßergebnisses sind Impuls- und Drehimpulserhaltung gute Ausgangspunkte.
Ich möchte mit meiner funktionierenden Berechnungslogik für meine Primitiven beginnen.

Mit der Open-Source-Physik-Engine ODE können Sie zwei Körper mit einer Reihe verschiedener Gelenke verbinden. Eines dieser Gelenke ist das „feste“ Gelenk . In der Physik-Engine ist es viel stabiler, die beiden Körper als einen einzigen Körper darzustellen, aber zwei separate Geometrien für Kollisionszwecke beizubehalten. ODE handhabt die Kollisionserkennung/-auflösung jedoch wahrscheinlich anders, als Sie es sich vorgestellt haben. Es erkennt eine Kollision erst nach einem Frame der gegenseitigen Durchdringung und beschränkt dann die Relativgeschwindigkeit der kollidierenden Körper so, dass sie beim nächsten Zeitschritt auseinander gezwungen werden. Diese Art von Einschränkung ist für einen einzelnen starren Körper viel einfacher zu erfüllen als für zwei, aber vielleicht verhindern Sie tatsächlich das Eindringen und benötigen daher eine andere Technik.

Das feste Gelenk zwingt die beiden Körper einfach dazu, eine relative Winkelgeschwindigkeit von Null und eine relative Lineargeschwindigkeit von Null zu haben (und hat auch einen Fehlerkorrekturterm, um eine kleine numerische Drift zu eliminieren). Danach erledigt der LCP-Solver den Rest.

Wenn P Den Vektor, der den Massenmittelpunkt von b1 mit dem Massenmittelpunkt von b2 verbindet , müssen Sie dann haben

v 2 = v 1 + ω 1 × P ω 2 = ω 1

A 2 = A 1 + a 1 × P + ω 1 × ω 1 × P a 2 = a 1

Im wirklichen Leben (tm) gibt es keine starren Körper (tm), und in erster Ordnung (dh unter geringer Spannung {*}) wirken alle Festkörper als Federn. Die gesuchte Regel ist das Hookesche Gesetz:

F = k Δ X .

Bleibt natürlich noch die Frage nach der Wahl der richtigen Federkonstanten (und der Tatsache, dass nicht alles ewig klingelt) sowie der richtigen Dämpfung.


Es ist mit ziemlicher Sicherheit besser, herauszufinden, wie zusammengesetzte Körper und einzelne Einheiten zu behandeln sind, als zu versuchen, bei jedem Schritt eine Finite-Elemente-Analyse (sogar drastisch vereinfacht) durchzuführen.


{*} Beachten Sie, dass Materialien wie Ton, die sich leicht verformen, nur bei äußerst geringen Drücken einer geringen Belastung ausgesetzt sind, sodass diese Regel praktisch nicht auf sie zutrifft, selbst wenn sie im Bereich der niedrigen Belastungsgrenze wohl gut ist.