Ich implementiere eine 3D-Engine, aber ich habe einige Probleme mit der Physik. Leider ist meine Ausbildung in diesem Bereich nicht so umfangreich und ich würde mich über Hilfe bei der Lösung dieses Problems freuen.
Nehmen wir an, wir haben eine unendliche Ebene und eine orientierte Box. Die Box hat sowohl Linear- als auch Winkelgeschwindigkeiten, die Ebene ist statisch, was bedeutet, dass ihre Linear- und Winkelgeschwindigkeiten Null sind. Irgendwann passiert eine Kollision, und wir wissen, welche Kante, Fläche oder Ecke des Würfels mit der Ebene kollidiert ist und wie tief sie ist. Lassen Sie es uns veranschaulichen.
In diesem Punkt wissen wir ein paar Dinge, listen wir sie auf:
Ich suche nach der Zeit t , in der die Kollision stattfand, was die Winkelgeschwindigkeit und die lineare Geschwindigkeit ist, die das Objekt zu diesem Zeitpunkt hatte.
Vielen Dank für eure Aufmerksamkeit :)
Um die Zwischenposition zwischen zwei Zeitschritten zu finden, müssen Sie eine kubische Spline-Funktion ohne Genauigkeitsverlust verwenden. Nehmen wir an, jeder Körper hat drei Freiheitsgrade und Sie kennen die Werte und ihre Ableitungen zwischen zwei Zeitschritten
Wenn die Zeitschrittgröße ist Und Im ersten Schritt werden dann die Zwischenwerte gefunden
Für jede Lösung gibt es die Koordinaten der Kontaktecke P als definiert
Für eine Kiste der Größe Und das ist
Die Einschränkung ist, ob die Form einer Linie (Ebene in 3D) Wo ist der Kontaktnormalenvektor und ist die Entfernung vom Ursprung. Sie befinden sich am Kontaktpunkt (innerhalb der Toleranz ) Wenn
Sie können jetzt wählen, ob Sie eine numerische Methode (wie die Halbierung) verwenden, um das Problem zu lösen, oder ob Sie annehmen, dass der Zeitschritt klein genug ist, um es zu lösen, indem Sie annehmen, dass Und
Der schnelle und einigermaßen genaue Weg (abhängig von der Größe des Zeitschritts), dies zu tun, besteht darin, die Position kurz vor der Kollision einzunehmen ( ) und unmittelbar nach der Kollision ( ), ziehen Sie eine Linie zwischen ihnen
Für die physikalische Lösung werde ich nur einen Scheitelpunkt verfolgen, da es viel einfacher ist, einen einzelnen Punkt zu verfolgen als eine höherdimensionale Entität. Außerdem ist es viel wahrscheinlicher, dass ein Objekt, das sich bewegt und dreht, an einer Ecke auftrifft, da eine Kante oder Fläche eine präzise Ausrichtung und ein präzises Timing erfordern würde.
Weitere Annahmen, um mein Leben einfacher zu machen (meistens sichere Annahmen vorausgesetzt ist ein Animationsframe):
Wir können die Bewegung des Scheitelpunkts als Kombination der Bewegung des Massenschwerpunkts und der Rotationsbewegung um den Massenschwerpunkt beschreiben:
Die Positionsänderung um den Massenschwerpunkt ist eine Rotation des Vektors
Die vollständige Transformation geht vorbei
Die Gesamtbewegung ist also gegeben durch
In dieser Form ist die Gleichung mit der unlösbar Und . Sie können die kleinen Winkelannäherungen machen
Wenn Sie kurz vor dem Aufprall keinen Zugriff auf die Position haben ( Position/Orientierung), können Sie verwenden
Suzu Hirose
fibonatisch
Haruko
Haruko
Haruko
Markus H
John Alexiou
John Alexiou