Das Problem bei Rotationen ist, dass die meisten Leute es in Euler-Winkeln sehen, da sie leicht zu verstehen sind.
Die meisten Menschen vergessen jedoch den Punkt, dass Euler-Winkel drei aufeinanderfolgende Winkel sind . Das bedeutet, dass die Drehung um die erste Achse die nächste Drehung relativ zur ersten ursprünglichen Drehung bewirkt. Daher können Sie einen Vektor nicht unabhängig voneinander mit Euler-Winkeln um jede der drei Achsen drehen.
Dies wird direkt in Matrizen übersetzt, wenn Sie zwei Matrizen multiplizieren. Sie können sich diese Multiplikation als Transformation einer Matrix in den Raum der anderen Matrix vorstellen.
Dies soll mit 3 aufeinanderfolgenden Rotationen geschehen, auch wenn Quaternionen verwendet werden.
Ich möchte die Tatsache betonen, dass Quaternionen keine Lösung für Gimble Lock sind. Tatsächlich passiert Gimble Lock immer, wenn Sie Euler-Winkel mit Quaternionen dargestellt haben. Das Problem ist nicht die Darstellung, das Problem sind die 3 aufeinander folgenden Schritte.
Die Lösung?
Die Lösung für das unabhängige Drehen eines Vektors um 3 Achsen besteht darin , ihn in eine einzige Achse und einen einzigen Winkel zu kombinieren. Auf diese Weise können Sie den Schritt beseitigen, bei dem Sie eine sequentielle Multiplikation durchführen müssen. Dies führt effektiv zu:
Meine Rotationsmatrix repräsentiert das Ergebnis der Rotation um X und Y und Z.
eher als die Euler - Interpretation von
Meine Rotationsmatrix repräsentiert die Rotation um X, Y und Z.
Um dies zu verdeutlichen, zitiere ich aus Wikipedia Eulers Rotationssatz:
Nach dem Rotationssatz von Euler entspricht jede Rotation oder Folge von Rotationen eines starren Körpers oder Koordinatensystems um einen festen Punkt einer einzelnen Rotation um einen gegebenen Winkel θ um eine feste Achse (Euler-Achse genannt), die durch den festen Punkt verläuft. Die Euler-Achse wird typischerweise durch einen Einheitsvektor dargestellt. Daher kann jede Drehung in drei Dimensionen als eine Kombination eines Vektors u → und eines Skalars θ dargestellt werden. Quaternionen bieten eine einfache Möglichkeit, diese Achsenwinkel-Darstellung in vier Zahlen zu codieren und die entsprechende Drehung auf einen Positionsvektor anzuwenden, der einen Punkt relativ zum Ursprung in R3 darstellt.
Beachten Sie, dass das Multiplizieren von 3 Matrizen immer 3 aufeinanderfolgende Rotationen darstellt.
Um nun Rotationen um 3 Achsen zu kombinieren, müssen Sie eine einzelne Achse und einzelne Winkel ermitteln, die die Rotation um X, Y, Z darstellen. Mit anderen Worten, Sie müssen eine Achsen- / Winkel- oder Quaternionendarstellung verwenden, um die sequentiellen Rotationen zu beseitigen.
Dies erfolgt normalerweise, indem Sie mit einer anfänglichen Ausrichtung (Ausrichtung kann als Achsenwinkel betrachtet werden) beginnen, die normalerweise als Quaternion oder Achsenwinkel dargestellt wird, und diese Ausrichtung dann ändern, um Ihre Zielausrichtung darzustellen. Sie beginnen beispielsweise mit dem Identitäts-Quaterion und drehen dann um den Unterschied, um die Zielausrichtung zu erreichen. Auf diese Weise verlieren Sie keinen Freiheitsgrad.