Ψ Die Informatikseite

Menü
Unterabschnitte

Quaternionen

Darstellung von Rotation mit Angular Displacement

Wir können eine Drehung mit Hilfe einer
  • Drehachse $n$ und
  • einem Drehwinkel $\Theta$
Wir können den zu rotierenden Ortsvektor $r$ in eine parallele und in eine senkrechte Komponente zu $n$ zerlegen:
  • Parallele Komponente: $r_{p}= <n,r>n$
  • Senkrechte Komponente: $r_{s}= r - r_{p}= r-<n,r>n$
--
  • $r_{s}$ rotiert den Ortsvektor $r$ auf Position $Rr_{s}$.
  • Wir konstruieren einen Vektor $V$, der senkrecht zu $r_{s}$ steht und senkrecht zu $n$ steht, also in der Ebene liegt6:

    \begin{displaymath}V=n\times r_{s}= n\times r\end{displaymath}

  • Berechne $Rr_{s}$ gemäß

    \begin{displaymath}Rr_{s}=\cos{(\Theta)}r_{s}+\sin{(\Theta)}V\end{displaymath}

  • Also

    \begin{displaymath}\begin{array}{l}
Rr=Rr_{p}+Rr_{s}\\
=Rr_{p}+\cos{(\Theta)}r_...
...-\cos{(\Theta)})n<n,r>+\sin{(\Theta)}n\times r\\
\end {array}
\end{displaymath}

Quaternionen als Verallgemeinerung der komplexen Zahlen

Quaternionen sind 4-Tupel reeller Zahlen, auf denen eine Multiplikation definiert ist. Sie besitzen dementsprechend $3$ imaginäre Einheiten für die gilt:

\begin{displaymath}i^{2}=j^{2}=k^{2}=-1\,\,\,\,\,ij=-ji=k\,\,\,\,\,jk=-kj=i\,\,\,\,\,ki=-ik=j\end{displaymath}

Auf Quaternionen kann eine Norm definiert werden

\begin{displaymath}\vert a+bi+cj+dk\vert^{2}=a^{2}+b^{2}+c^{2}+d^{2}\end{displaymath}

Einheitsquaternionen haben als Norm $1$.
Das konjugierte Quaternion ist von der Form

\begin{displaymath}\overline{a+bi+cj+dk}=a-bi-cj-dk\end{displaymath}

Für ein Einheitsquaternion gilt, dass das Inverse das konjugierte Quaternion ist

\begin{displaymath}q^{-1}=\overline{q}\end{displaymath}

Rotation mit Quaternionen

Zwei Quaternionen lassen sich wie folgt multiplizieren

\begin{displaymath}q_{1}\cdot q_{2}=(s_{1},v_{1})\cdot(s_{2},v_{2})=(s_{1}+x_{1}i+y_{1}j+z_{1}k)\cdot(s_{2}+x_{2}i+y_{2}j+z_{2}k)\end{displaymath}


\begin{displaymath}= (s_{1}s_{2}-v_{1}v_{2},s_{2}v_{1}+s_{1}v_{2}+v_{1}\times v_{2})\end{displaymath}

Mit Hilfe dieser Multiplikation können wir nun die Rotation eines Punktes $r$ um eine Achse $n$ erzeugen. Wir setzen

\begin{displaymath}R_{q}(p)=qpq^{-1}\end{displaymath}

  • Dabei ist $p$ das rein imaginäre Quaternion, welches den zu rotierenden Punkt $r$ darstellt. Die Koordindaten des Punktes $r$ werden in den Imaginärteil des Quaternions abgebildet $(x,y,z)\mapsto (0,x,y,z)$.
  • Bilde $(\Theta,n)$ auf das Einheitsquaternion $q=(\cos{(\frac{\Theta}{2})},\sin{(\frac{\Theta}{2})}n)$, wobei $n$ normiert sein muss7.
  • Die Operation $R_{q}(p)=qpq^{-1}$ ergibt wieder ein rein imaginäres Quaternion, welches rotiert ist.
Eine Verkettung der Rotationen durch Quaternionenmultiplikation ist durchführbar $R_{q_{2}}=R_{q_{0}}R_{q_{1}}$ mit $q_{2}=q_{0}q_{1}$.

Sphärische lineare Interpolation

Leider interpoliert die normale Quaternionenrotation nicht linear. Man kann sich jedoch mit der sphärischen linearen Interpolation implementiert in SLERP Abhilfe verschaffen. Es ist eine Laufvariable $u\in [0,1]$ anzugeben, über die linear interpoliert wird mit der Formel:

\begin{displaymath}\mbox{slerp}\left( A,B,u\right) =A\frac{\sin (\left( 1-u\righ...
...Omega) }{\sin (\Omega) }+B\frac{\sin (\Omega u)}{\sin \Omega }.\end{displaymath}

$A$ und $B$ sind Einheitsquaternionen.

Fußnoten

... liegt6
Das Kreuzprodukt erzeugt einen Vektor, der zu der Ebene, die durch beide Vektoren aufgespannt wird, senkrecht steht.
... muss7
Man kann sehr einfach beweisen, dass wenn $n$ normiert vorliegt, dieses Quaternion ein Einheitsquaternion ist.