Haftungsausschluss: Ich bin ein professioneller Spieleprogrammierer und verwende an den meisten Tagen Quaternionen, aber sie sind für mich der schwarzen Magie nahe. Ich bin mit Mathe relativ zu Hause, aber imaginäre Zahlen haben mich immer verwirrt. Ich neige dazu, Quats als nützlich zu behandeln und Multiplikationen mehr als einmal umzukehren. Ich versuche, über sie zu argumentieren, wie ich es mit Matrizen mit begrenztem Erfolg tun würde.
Jedenfalls....
Was mich verblüfft, ist das Folgende. Wenn ich ein Objekt um seine lokale Achse drehen möchte, multipliziere ich seine Drehung mit dem Quaternion, das die Drehung darstellt, die ich anwenden möchte. Es ist daher eine Rotation im lokalen Raum.
Wenn ich es nun um eine Achse im Weltraum drehen möchte, wäre meine Argumentation: Nehmen Sie die Rotation im Weltraum als Quaternion. Multiplizieren Sie die Umkehrung meiner Objektrotation mit dieser Quaternion. Dies wird meine Weltrotation in den lokalen Raum bringen. Multipliziere meine Rotation mit dieser neuen Quaternion. dh: newRot = oldRot * (inverse oldRot * worldRot)
Was ich jedoch tun muss, ist newRot = oldRot * (inverse oldRot * worldRot) * oldRot.
Warum muss ich nach dem Multiplizieren mit dem inversen Quat immer noch mit meinem eigenen Quat multiplizieren, bevor ich es anwende? Ich weiß, dass es einen vollkommen gültigen Grund geben muss, aber ich kann meinen Ausweg nicht begründen und es ist zum Teufel frustrierend für mich. Ich habe die verschiedenen FAQs und so weiter ausprobiert, aber die meisten gehen zu tief in die Mathematik, was es mir weniger klar macht.
Wer kann mir das erklären, als wäre ich 5 Jahre alt?
quelle
I try to reason about them like I would with matrices
- Dann sind Sie auf dem richtigen Weg. Wenn Sie verstanden haben, wie man mithilfe von Matrizen um die Achsen des Objekts und der Welt dreht, können Sie dies auch mithilfe von Quaternionen tun. Die Multiplikationsreihenfolge ist für Matrizen und Quaternionen gleich.Antworten:
Quaternionen sind assoziativ:
Sie erwähnen, dass Ihre Lösung ist:
Das ist das gleiche wie:
Das ist das gleiche wie:
Das bringt Sie zurück zu dem, was wirklich passiert:
Die Reihenfolge der Anwendung ändert sich, das ist alles. Zurück zu den Matrizen: Wenn Sie eine Objektmatrix auf eine Transformationsmatrix anwenden und diese als neue Objektmatrix speichern, ist dies Ihre lokale Raumtransformation. Wenn Sie die Transformationsmatrix auf die Objektmatrix anwenden und diese speichern, ist dies Ihre Welttransformation. Es geht nur um die Reihenfolge der Anwendung und nichts weiter.
quelle