Ich frage mich, ob jemand eine elegante Art hat, das folgende Szenario zu berechnen.
Ich habe ein Objekt mit einer (n) Anzahl von Quadraten, zufälligen Formen, aber wir werden so tun, als wären sie alle Rechtecke.
Wir haben es mit keiner Schwerkraft zu tun, also betrachten Sie das Objekt im Raum aus einer Perspektive von oben nach unten. Ich übe eine Kraft auf das Objekt an einem bestimmten Quadrat aus (siehe Abbildung unten).
Wie berechne ich den Drehwinkel basierend auf der ausgeübten Kraft an der ausgeübten Stelle? Wenn es in der Mitte des Quadrats angewendet würde, würde es gerade gehen. Wie soll es sich verhalten, je weiter ich mich vom Zentrum entferne? Wie berechne ich die Rotationsgeschwindigkeit?
Antworten:
Sie versuchen das Drehmoment zu berechnen. Das Drehmoment hängt von der ausgeübten Kraft F, dem Angriffspunkt und dem Schwerpunkt des Objekts ab.
1) Schwerpunkt . Definieren Sie den Massenmittelpunkt des Objekts.
2) Punkt der Applikation : Definieren Sie den Punkt , an dem die Kraft wirkt.
3) Momentarm : Der Abstand zwischen den beiden oben definierten Punkten.
4) Winkelkraft : Teilen Sie Ihre Kraft F in zwei orthogonale Vektoren, einen parallel zur Linie in 3) und einen senkrecht. Die Parallelkomponente beeinflusst den Drehimpuls nicht. Das Senkrechte tut es. Sie können die Parallelkomponente durch Vektorprojektion berechnen. Sie können dies vom Original subtrahieren, um die senkrechte Komponente zu erhalten. Im Pseudocode (
dot
bedeutet Skalarprodukt)5) Drehmoment : Die senkrechte Komponente der Kraft multipliziert mit der Länge des Momentarms.
Um vom Drehmoment zur Winkelgeschwindigkeit zu gelangen:
1) Trägheitsmoment : Eine Definition, wie viel Rotationsträgheit ein bestimmtes Objekt hat. Zum Beispiel ist mehr Drehmoment erforderlich, um einen langen Stab zu drehen als eine Kugel derselben Masse. Wenn Sie sich keine Gedanken über den Realismus machen, können Sie so tun, als ob das Trägheitsmoment relativ zur Masse ist, oder Sie könnten die Form und Masse des Objekts vollständig ignorieren.
2) Winkelbeschleunigung :
3) Winkelgeschwindigkeit : Die Winkelgeschwindigkeit steigt so lange an, wie das Drehmoment aufgebracht wird. Eine Formel lautet also ungefähr "Winkelgeschwindigkeit zum Zeitpunkt T ist die kumulative Summe der Winkelbeschleunigung bis T ". Dies wird im Pseudocode ausgedrückt als
quelle
orientation += angularVelocity * elapsedSeconds
ist falsch, da sie die Geschwindigkeit über den Zeitschritt überschätzt, was bedeutet, dass unterschiedliche Frameraten unterschiedliche Orientierungen ergeben. Eine richtige Formel wäre:float oldVelocity = angularVelocity; angularVelocity += angularAcceleration * elapsedSeconds; orientation += 0.5f * (angularVelocity + oldVelocity) * elapsedSeconds;
. Da es keine Schwerkraft gibt, empfehle ich stattdessen die Verwendung des Schwerpunkts. +1 für die sehr gute Erklärung.Wenn die Kräfte nicht zu stark sind, ist es viel einfacher, die Drehung mit mehreren Punkten und Federn zu simulieren, die sie verbinden. In diesem Fall nehmen Sie einfach an, dass Ihre Form aus mehreren Punkten besteht, die durch Federn verbunden sind. Jeder Punkt repräsentiert die Masse und alles andere in der Form hat eine Masse von Null.
im obigen Bild stehen schwarze Punkte für Massen und rote Linien für Federn. Um die Kraft anzuwenden, müssen Sie sie nur auf den nächsten Punkt anwenden, und Sie werden sehen, dass sich Ihr Objekt nach Ihren Wünschen dreht. Um Ihre Form wie eine feste Struktur aussehen zu lassen, ist es besser, Federn mit einem hohen Dämpfungswert und einem hohen k-Wert zu definieren.
quelle