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?