142 Stimmen

Warum werden Quaternionen für Rotationen verwendet?

Ich bin Physiker und habe etwas Programmieren gelernt. Dabei bin ich auf viele Leute gestoßen, die Quaternionen für Rotationen verwenden, anstatt Dinge in Matrix-/Vektorform zu schreiben.

In der Physik gibt es sehr gute Gründe, warum wir keine Quaternionen verwenden (trotz der bizarren Geschichte, die gelegentlich über Hamilton/Gibbs/etc erzählt wird). Die Physik verlangt, dass unsere Beschreibungen ein gutes analytisches Verhalten haben (das hat eine genau definierte Bedeutung, aber auf eine ziemlich technische Art und Weise, die weit über das hinausgeht, was in normalen Einführungskursen gelehrt wird, also werde ich nicht ins Detail gehen). Es hat sich herausgestellt, dass Quaternionen dieses nette Verhalten nicht haben und daher nicht nützlich sind, während Vektoren/Matrizen es haben und wir sie daher verwenden.

Beschränkt man sich jedoch auf starre Rotationen und Beschreibungen, die keine analytischen Strukturen verwenden, können 3D-Rotationen auf beide Arten gleichwertig beschrieben werden (oder auf einige andere Arten).

Im Allgemeinen wollen wir nur eine Abbildung eines Punktes X = (x, y, z) auf einen neuen Punkt X' = (x', y', z') unter der Bedingung, dass X 2 \= X' 2 . Und es gibt viele Dinge, die das tun.

Der naive Weg besteht darin, die so definierten Dreiecke zu zeichnen und Trigonometrie zu verwenden, oder die Isomorphie zwischen einem Punkt (x, y, z) und einem Vektor (x, y, z) und die Funktion f(X) = X' und eine Matrix MX = X' zu verwenden, oder Quaternionen zu verwenden, oder die Komponenten des alten Vektors entlang des neuen Vektors mit einer anderen Methode zu projizieren (x, y, z) T .(a,b,c) (x',y',z'), usw.

Aus mathematischer Sicht sind alle diese Beschreibungen in diesem Rahmen äquivalent (als Theorem). Sie haben alle die gleiche Anzahl von Freiheitsgraden, die gleiche Anzahl von Beschränkungen usw.

Warum also werden Quaternionen gegenüber Vektoren bevorzugt?

Die üblichen Gründe, die ich sehe, sind keine kardanische Verriegelung oder numerische Probleme.

Das Argument der fehlenden Kardanverriegelung erscheint merkwürdig, da dies nur ein Problem der Eulerwinkel ist. Es handelt sich auch nur um ein Koordinatenproblem (genau wie die Singularität bei r=0 in Polarkoordinaten (die Jacobikurve verliert ihren Rang)), was bedeutet, dass es sich nur um ein lokales Problem handelt, das durch einen Koordinatenwechsel, eine Drehung aus der Entartung heraus oder die Verwendung von zwei sich überlappenden Koordinatensystemen gelöst werden kann.

Bei den Zahlen bin ich mir nicht so sicher, da ich nicht im Detail weiß, wie diese beiden (und etwaige Alternativen) umgesetzt werden würden. Ich habe gelesen, dass es einfacher ist, eine Quaternion zu re-normalisieren als eine Rotationsmatrix, aber das gilt nur für eine allgemeine Matrix; eine Rotation hat zusätzliche Einschränkungen, die dies trivialisieren (die in die Definition von Quaternionen eingebaut sind) (Tatsächlich muss dies wahr sein, da sie die gleiche Anzahl von Freiheitsgraden haben).

Was ist also der Grund für die Verwendung von Quaternionen im Vergleich zu Vektoren oder anderen Alternativen?

10voto

Mike Punkte 17188

Im Allgemeinen wollen wir nur eine Abbildung eines Punktes X=(x,y,z) auf einen neuen Punkt X'=(x',y',z') unter der Bedingung, dass X^2 = X'^2. Und es gibt eine Menge Dinge, die dies tun.

Wir wollen auf keinen Fall nur wollen das. Es gibt eine sehr wichtige Spitzfindigkeit, die viele Menschen vermissen . Die Konstruktion, von der du sprichst (Dreiecke zeichnen und Trigonometrie verwenden usw.), wird einen Vektor korrekt in den anderen drehen. Aber es gibt unendlich viele Drehungen, die das tun. Insbesondere kann ich, nachdem du deine Drehung durchgeführt hast, das ganze System um den X'-Vektor rotieren lassen. Das wird die Position von X' überhaupt nicht verändern. Die Kombination aus deiner und meiner Drehung ist äquivalent zu einer weiteren einzelnen Drehung (da Drehungen eine Gruppe bilden ). Im Allgemeinen müssen Sie in der Lage sein, eine solche Drehung darzustellen.

Es stellt sich heraus, dass Sie kann dies nur mit einem Vektor tun. (Das ist die Achsen-Winkel-Darstellung von Drehungen .) Die Kombination von Drehungen in der Achsen-Winkel-Darstellung ist jedoch schwierig. Quaternionen machen es einfach, zusammen mit vielen anderen Dingen. Im Grunde genommen haben Quaternionen alle Vorteile anderer Darstellungen und keinen der Nachteile. (Obwohl ich zugeben muss, dass es spezielle Anwendungen geben kann, für die eine andere Darstellung besser ist).


Ein weiterer Punkt, den viele Leute übersehen, ist, dass Quaternionen oft besser sind, wenn man Operationen durchführen muss zu den Rotationen selbst . Selbst um zu dem Punkt zu gelangen, an dem wir eine Drehung auf einen Vektor anwenden können, müssen wir herausfinden, wie diese Drehung aussehen soll. Sehr oft werden wir Folgendes brauchen verfassen. Rotationen, invertieren Rotationen, und interpolieren o erweitern. Rotationen. All dies kann mit Quaternionen sehr effizient und genau durchgeführt werden. Andere Darstellungen können für eine dieser Operationen fast so gut sein wie Quaternionen, aber sicher nicht für alle.

8voto

Mark Green Punkte 1290

Man sollte bedenken, dass alle Eigenschaften, die mit der Rotation zusammenhängen, nicht wirklich Eigenschaften von Quaternionen sind: Sie sind Eigenschaften von Euler-Rodrigues-Parametrisierungen die die eigentliche 4-Elemente-Struktur zur Beschreibung einer 3D-Drehung ist.

Ihre Beziehung zu den Quaternionen ist ausschließlich auf ein Papier von Cayley zurückzuführen, "On certain results related to Quaternions", in dem der Autor die Korrelation zwischen der Quaternionenmultiplikation und der Kombination von Euler-Rodrigues-Parametrisierungen feststellt. Dies ermöglichte die Anwendung von Aspekten der Quaternionentheorie auf die Darstellung von Rotationen und insbesondere auf die Interpolation zwischen ihnen.

Sie können das Papier hier lesen: https://archive.org/details/collmathpapers01caylrich . Aber zu der Zeit, gab es keine Verbindung zwischen Quaternionen und Rotation und Cayley war ziemlich überrascht zu finden, es war:

In der Tat sind die Formeln genau die, die M. Olinde für eine solche Transformation angegeben hat Rodrigues Liouville, t. v., "Des lois géométriques qui régissent les déplacements d'un système solide [...]" (oder Comb. Math. Journal, t. iii. p. 224 [6]). Es wäre eine interessante Frage, wie das Auftreten dieser Koeffizienten hier a priori zu erklären ist.

Die Quaternionen haben jedoch nichts an sich, was der Rotation einen Vorteil verschafft. Quaternionen verhindern keine kardanische Blockierung; Euler-Rodrigues-Parametrisierungen schon. Nur sehr wenige Computerprogramme, die eine Drehung durchführen, werden wahrscheinlich wirklich Quaternion-Typen implementieren, die erstklassige komplexe mathematische Werte sind. Leider scheint irgendwo ein Missverständnis über die Rolle der Quaternionen durchgesickert zu sein, was dazu geführt hat, dass einige verwirrte Grafikstudenten die Details der komplexen Mathematik mit mehreren imaginären Konstanten gelernt haben und dann nicht wissen, warum dies die Probleme mit der Rotation löst.

5voto

Elmore Punkte 236

Eine Antwort, die jemand lesen könnte: Bei allen Darstellungen gibt es lästige Probleme. Quaternionen sind kleiner als Matrizen, aber die Quaternionenmultiplikation ist kein einfaches Vektorpunktprodukt oder ähnliches und benötigt auf einem Computer tatsächlich mehr Zeit als das Punktprodukt zweier 3x3-Matrizen. (Computer sind sehr gut im Umgang mit gewöhnlichen Matrizen)

Matrizen haben jedoch noch andere störende Eigenschaften. Zum Beispiel sind sie auf Dauer keine stabilen Gebilde. Bei der Modellierung von Rotationen im 3D-Raum akkumuliert man üblicherweise Rotationen übereinander zu einer Orientierungsmatrix, d. h. einer einzigen Rotationsmatrix, in der die Orientierung eines Bezugsrahmens gespeichert ist. Dieser Prozess wird im Laufe von Millionen von Additionen dazu führen, dass die O-Matrix von einer strengen Rotationsmatrixform abweicht. Dies kann umgangen werden, indem die Matrix in regelmäßigen Abständen neu konfiguriert wird, aber es gibt Bedingungen, unter denen dies nicht trivial ist. Dies gilt insbesondere für den Fall, dass die Identitätsmatrix nicht rotiert.

Man müsste eine Achsen-Winkel-Darstellung (oder Quaternionen-Darstellung) der Drehung finden und dann eine Matrix dafür reproduzieren. Die meisten Algorithmen erzeugen einen Nullvektor und stoßen in diesem Fall auf eine Null-Division. In solchen Fällen ist es im Allgemeinen auch keine gute Idee, zu versuchen, solche Fälle mit "if 0 then..." zu vermeiden. -Lösungen zu vermeiden, da a) Gabelungen langsam sind und b) man immer noch mit einem Maschinen-Epsilon von der Singularität entfernt landen kann, was zu horrenden Fehlern führt.

1voto

Einheitsquaternionen bieten eine kompakte Darstellung der dreidimensionalen Orthogonalgruppe O(3) und insbesondere ihrer Untergruppe, der dreidimensionalen speziellen Orthogonalgruppe SO(3). Es gibt viele Verwendungszwecke dafür, aber der, den ich am besten kenne, ist die Verwendung in Trägheitsnavigationssystemen mit einer Strapdown-Anordnung von Beschleunigern und Kreiseln. Ein Element von SO(3) wird verwendet, um die "Position" eines Fahrzeugs auf der Erde (bzw. einer Kugel, die die Erdoberfläche annähert) darzustellen. Ein weiteres Element wird verwendet, um die "Lage" des Fahrzeugs zu spezifizieren, d. h. die Beziehung zwischen seinem Körperrahmen und der lokalen Tangentialebene. Beide werden mit kleinen Änderungen (10Hz oder kleinere Zeitschritte) "integriert", um sie mit neuen Daten zu aktualisieren. Die Drehungen der "Lage" und der "Position" bilden ein "gekoppeltes" Differentialsystem, da die auf die Karosserie des Fahrzeugs wirkenden Kräfte in der lokalen Tangentialebene aufgelöst werden, um die Drehung der "Position" des Fahrzeugs zu aktualisieren.

Quaternionen lassen sich auf diese Weise leicht integrieren (vier Quaternionenadditionen). Nach der "Integration" ist das Ergebnis kein Mitglied von SO(3) mehr, aber eine einfache Renormierung "projiziert" die integrierte Quaternion wieder auf SO(3). Man verwendet und behält nur 4 Werte pro Quaternion.

Die Verwendung der Quaternionen-Integration für die Trägheitsnavigation war bereits in den 1980er Jahren Industriestandard. Die erste mir bekannte Veröffentlichung, in der dies vorgeschlagen wurde, stammt aus dem Jahr 1973. Damals lernten Mathematikstudenten Quaternionen nur als "ungerades" Beispiel in der Algebra kennen (ein nichtkommutativer Divisionsring).

In vielen Anwendungen (z. B. Computergrafik) sind Quaternionen jedoch inzwischen die bevorzugte Darstellung von SO(3). Aus mathematischer Sicht ist sie sogar noch interessanter, da sie das einfachste Beispiel für "Kalkül auf Mannigfaltigkeiten" liefert (die Kugel ist eine einfache Mannigfaltigkeit und SO(3) ist eine Lie-Gruppe).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X