Zum Inhalt springen

Ing Mathematik: Quaternionen

Aus Wikibooks


Eine Verallgemeinerung der komplexen Zahlen sind die  hyperkomplexen Zahlen. Dazu gehören auch die  Quaternionen. Die Quaternionen werden auch als hamiltonsche Zahlen ℍ bezeichnet. Entdeckt wurden die Quaternionen ursprünglich jedoch von Olinde Rodrigues. Quaternionen haben z.B. in der Roboterkinematik, Computergrafik und der Steuerung von Satelliten Bedeutung. Mit ihnen können 3D-Drehungen ohne Gimbal Lock (kardanische Blockade) beschrieben werden, und das speicher- und recheneffizient, sowie numerisch stabil.

Allgemeines

[Bearbeiten]

Quaternion: q=a+ib+jc+kd ∈ℍ

mit den imaginären Einheiten: i2=j2=k2=ijk=−1

a,b,c,d∈ℝ

a sei der Realteil oder Skalarteil einer Quaternion.

ib+jc+kd wird auch Imaginärteil oder Vektorteil genannt.

Die Konjugierte der Quaternion ist: q‾=a−ib−jc−kd

Die Länge oder Norm des Quaternions: |q|=a2+b2+c2+d2

Es gilt:

ij=k; jk=i; ki=j; ji=−k; kj=−i; ik=−j

Es seinen nun: q1=a1+ib1+jc1+kd1 und q2=a2+ib2+jc2+kd2

Addition zweier Quaternionen: q1+q2=(a1+a2)+i(b1+b2)+j(c1+c2)+k(d1+d2)

Aufgabe: Multiplizieren sie zwei Quaternionen q1q2=(a1+ib1+jc1+kd1)(a2+ib2+jc2+kd2)

Die Multiplikation ist i. A. nicht kommutativ: q1q2≠q2q1

Inverse einer Quaternion: q−1=q‾|q|2

Einheitsquaternion (Versor): |q| = 1

Reines Quaternion: q=0+ib+jc+kd

Skalarprodukt: ⟨q1,q2⟩:=a1a2+b1b2+c1c2+d1d2

Aufgabe: Leiten Sie das Kreuzprodukt q1×q2 her. Siehe dazu ev. auch  Quaternion#Kreuzprodukt oder recherchiere im Internet (z.B. mittels KI).

Trigonometrische Form der Quaternion: q=r(cos⁡φ+nqsin⁡φ)=r(cos⁡φ+(inx+jny+knz)sin⁡φ) mit dem Einheitsvektor nq=(b,c,d)T|(b,c,d)T|. φ ist die Hälfte des Drehwinkels im 3D-Raum.

Drehungen

[Bearbeiten]

Drehung um den Winkel Θ um die Achse nq: q=|q|(cos(Θ2)+nqsin⁡(Θ2)).

Transformationsformel eines Vektors v: v′=qvq−1=qvq‾.

Zahlenbeispiel: Gegeben sei ein Punkt P=(1,0,0). Die Drehachse sei die z-Achse n=(0,0,1). Der Drehwinkel sei 90° oder im Bogenmaß π2.

q=1(cos⁡π4+(0,0,1)Tsin⁡π4)=22(1+k)

q‾=22(1−k)

p=i

p′=qpq‾=12(1+k)⋅i(1−k)=12(i+j+j−i)=j.

Dies entspricht dem Punkt P′=(0,1,0)T.

Das obige Zahlenbeispiel kann natürlich auch rechnergestützt bearbeitet werden, z.B. mit Python und dem externen Python-Modul pyquaternion:

from pyquaternion import Quaternion
import numpy as np

q = Quaternion(axis=[0.0, 0.0, 1.0], angle=np.pi/2.)
p = np.array([1.0, 0.0, 0.0])
p_str = q.rotate(p)

np.set_printoptions(suppress=True)
print(p_str)

Ausgabe:

[0. 1. 0.]

Es gibt auch noch andere Python-Bibliotheken, die zum Rechnen mit Quaternionen gedacht sind. Diese seien hier aber nicht aufgezählt. Bei Interesse recherchieren Sie ggf. im WWW.

Einige Begriffe im Zusammenhang mit  3D-Rotationen in der Computergrafik:

  • LERP (Linear Interpolation): Dient dazu, um sanfte Drehungen zwischen zwei Orientierungen zu berechnen. Bewirkt aber unrunde Bewegungen.
  • SLERP (Spherical LERP): Ergibt flüssigere Bewegungen, ist aber aufwändiger.

Biquaternionen

[Bearbeiten]

Mittels  Biquaternionen lassen sich allgemeine Starrkörperbewegungen (Rotation + Verschiebung) beschreiben. Sie wurden von  William Kingdon Clifford eingeführt und sind eine Verallgemeinerung der Quaternionen.

Biquaternion: q=a+ib+jc+kd

mit den imaginären Einheiten: i2=j2=k2=ijk=−1

a,b,c,d∈ℂ

Andere Möglichkeiten Drehungen zu beschreiben

[Bearbeiten]
[Bearbeiten]

Gedruckte Bücher

[Bearbeiten]
  • Bronstein et al.: Taschenbuch der Mathematik; 7.Auflage, Harri Deutsch, 2008, Seite 294ff
  • Foley: Four-Dimensional Angles: The Mathematics of Quaternions; epubli, 2026