(Diese Antwort ist im Wesentlichen dieselbe wie die von Stefan, aber ich wollte einige Details zu Zeilen- und Spaltenvektoren hinzufügen und erläutern, welche Sie verwenden.)
Ja, dies ist möglich, aber die Details hängen davon ab, ob Sie Ihre Vektoren als Zeilen oder Spalten darstellen.
Spaltenvektoren
Wenn Sie Spaltenvektoren verwenden, transformieren Sie diese normalerweise, indem Sie Ihre Matrizen nach links multiplizieren:
vector = mRotateZ * vector;
vector = mRotateX * vector;
Natürlich können Sie dies auch in einem Schritt tun:
vector = mRotateX * mRotateZ * vector;
Die Matrixmultiplikation ist jedoch assoziativ, was bedeutet, dass es keine Rolle spielt, welche Multiplikation zuerst durchgeführt wird:
A * B * C = (A * B) * C = A * (B * C)
Also können wir schreiben
Matrix mRotate = mRotateX * mRotateZ;
vector = mRotate * vector;
Wir haben jetzt eine einzige Matrix erstellt, die äquivalent ist erste Drehung um Z
und zweiten über X
. Dies verallgemeinert sich trivial für eine beliebige Anzahl von Transformationen. Beachten Sie, dass Transformationen von rechts nach links angewendet werden.
Zeilenvektoren
Wenn auf der anderen Seite sind Sie mit Zeilenvektoren, werden Sie in der Regel rechts -multiply Ihre Matrizen:
vector = vector * mRotateZ;
vector = vector * mRotateX;
Wieder schreiben wir es in einem Schritt
vector = vector * mRotateZ * mRotateX;
welches umgeschrieben werden kann als
Matrix mRotate = mRotateZ * mRotateX;
vector = vector * mRotate;
Beachten Sie, dass in diesem Fall die Transformationen von links nach rechts angewendet werden.
Ja, multiplizieren Sie sie einfach in umgekehrter Reihenfolge:
BEARBEITEN. Meine Antwort gilt nur, wenn Sie Spaltenvektoren verwenden. Bitte lesen Sie die ausführliche Antwort von Martin Büttner.
quelle
Aus der Mathematik:
Was dies (im Wesentlichen) bedeutet, ist Folgendes:
Denk darüber nach. Ausgehend vom Objektraum können Sie Ihr Objekt mit nur einer einzigen Drehung in eine beliebige Ausrichtung drehen .
Ich möchte darauf hinweisen, dass das Einbringen von Quaternionen nicht nur eine zufällige Mathematik war. Im Gegensatz zu den anderen Antworten besteht der bevorzugte Ansatz in Grafiken darin, Rotationen als Quaternionen darzustellen, da sie weniger Platz beanspruchen und schneller zu kombinieren sind.
Es gibt leicht zu googelnde Möglichkeiten, zwischen Rotationsmatrizen und Quaternionen zu konvertieren, je nachdem, welche Sie bevorzugen. Der Punkt ist , dass Drehungen sind die Quaternionen im mathematischen Sinne, also Kombinationen davon sind auch einzelne Umdrehungen.
quelle