Facebook Social Icon Twitter Social Icon YouTube Social Icon

Help:Rotationen mit Quaternionen (Einführung in die Quaternionen-Mathematik)

Revision as of 21:12, 15 February 2011 by René Schwarz (talk | contribs)
From M.Eng. René Schwarz, Bremen/Merseburg
Jump to: navigation, search

Im Jahr 1843 erarbeitete Sir William Rowan Hamilton ein vierdimensionales Zahlensystem samt zugehöriger Algebra, das er als Quaternionen (lat. quaternio: „Vierheit“) bezeichnete. Die Quaternionen verstehen sich als Erweiterung der reellen Zahlen um drei weitere Dimensionen. Quaternionen finden häufig Verwendung bei der Beschreibung von Drehungen im dreidimensionalen Raum, z.B. in der Computergrafik oder in Reglern und Simulationen in Luft- und Raumfahrt. Sie bieten eine sehr elegante Möglichkeit, Drehungen im dreidimensionalen Raum zu beschreiben und Nachteile von Matrixtransformationen zu umgehen.

Zunächst mag es erstaunlich und vielleicht auch abschreckend sein, sich einer vierdimensionalen Algebra bei der Beschreibung von Transformationen in einem dreidimensionalen Raum zu bedienen, zumal Quaternionen vielfach nicht Inhalt der Lehre während der mathematischen Grundausbildung an Hochschulen und Universitäten sind. Ich möchte daher auf dieser Seite versuchen, einen kurzen, praktisch orientierten Einblick in den Körper der Quaternionen zu geben und auf die Vor- und Nachteile der Quaternionen und Rotationsmatrizen/Matrixtransformationen einzugehen. Diese Einführung legt dabei bewusst Hauptaugenmerk auf die Verwendung von Beispielen, um den Einstieg in die Thematik zu erleichtern.


Elementare Transformationen von Punkten im dreidimensionalen Raum

Ein Vektor <math>\vec{P} \in \mathbb{R}^3</math> soll den Ortsvektor eines Punktes im dreidimensionalen Raum (<math>\mathbb{R}^3</math>) in kartesischen Koordinaten beschreiben. Der Vektor <math>\vec{P}</math> besteht aus den Komponenten

{{#if:

|
()
|

}}

Dieser Punkt kann nun verändert (transformiert) werden; dabei entsteht ein neuer, transformierter Punkt <math>\vec{P}^\star \in \mathbb{R}^3</math> mit <math>\vec{P}^\star = \begin{pmatrix} P_x^\star \\ P_y^\star \\ P_z^\star \end{pmatrix}</math>. Folgende Transformationen des Ursprungspunktes <math>\vec{P}</math> sind beispielsweise denkbar:

  • Verschiebung (Translation)
  • Drehung um eine Rotationsachse (Rotation)
  • Spiegelung
  • Projektion auf eine Koordinatenebene (x-y-, y-z- oder x-z-Ebene).

Spricht man nicht nur von einem einzelnen Punkt <math>\vec{P}</math>, sondern von einer Menge <math>\mathcal{P}</math> von Punkten <math>\vec{P}_i</math> und damit von einem Objekt, z.B. den Eckpunkten eines Quaders, so sind folgende zusätzliche Transformationen denkbar:

  • Scherung/Deformation
  • (dimensionsweise) Vergrößerung/Verkleinerung (Skalierung)
  • perspektivische Transformation.

An dieser Stelle soll nun jedoch lediglich die Rotation näher betrachtet werden.


Drehung um eine Rotationsachse mit einer Rotationsmatrix

Gegeben sei ein Punkt <math>\vec{P}</math>, dessen Ortsvektor und die Abszisse des kartesischen Koordinatensystems einen beliebigen Winkel <math>\alpha \in [0, 2 \pi[</math> einschließt. Dieser Punkt <math>\vec{P}</math> soll durch Rotation um einen beliebigen Winkel <math>\varphi \in [0, 2\pi[</math> bezüglich des Koordinatenursprungs <math>\vec{o} = (0,0,0)^\mathrm{T}</math> <ref group="Anm.">Nebenbei bemerkt: <math>\vec{o}</math> steht für Origo (lat. „Herkunft, Ursprung“), also für die Koordinaten des Koordinatenursprungs.</ref> in einen neuen Punkt <math>\vec{P}^\star</math> transformiert werden. Die Rotation wird um die Applikate (z-Achse) durchgeführt. Die nebenstehende Abbildung veranschaulicht diesen Sachverhalt.

miniatur|350px|rechts|Grafik zur Herleitung der Rotationsmatrix <math>\underline{R_z}</math>

Man kann nun feststellen, dass unendliche viele, voneinander verschiedene Rotationen des Punktes <math>\vec{P}</math> um die Applikate transformierte Punkte <math>\vec{P}_i^\star</math> erzeugen, die sich auf einem Kreis mit Mittelpunkt <math>\vec{o}</math> und einem Radius <math>r = \sqrt{P_x^2 + P_y^2}</math> (dem Abstand des Punktes <math>\vec{P}</math> zur Applikate) sammeln.

Aus den trigonometrischen Funktionen ergeben sich die Koordinaten für den Ursprungspunkt <math>\vec{P}</math> wie folgt (die dritte Komponente bleibt unberührt):

{{#if:

|
1
()
|
1

}}

Ebenso ergeben sich die Koordinaten des transformierten Punktes <math>\vec{P}^\star</math> unter Zuhilfenahme der Additionstheoreme der trigonometrischen Funktionen zu

{{#if:

|
()
|

}}

\begin{pmatrix} r (\cos \alpha \cos \varphi - \sin \alpha \sin \varphi ) \\ r (\sin \alpha \cos \varphi + \cos \alpha \sin \varphi) \\ P_z \end{pmatrix}.\end{align}</math>|2}}

Setzt man nun die beiden ersten Komponenten von <math>\vec{P}</math> aus Gleichung (1), d.h. <math>r \cos \alpha = P_x</math> und <math>r \sin \alpha = P_y</math> in Gleichung (2) ein, so ergibt sich folgende Gleichung:

{{#if:

|
3
()
|
3

}}

Man sieht leicht ein, dass Gleichung (3) auch durch eine Matrixmultiplikation<ref group="Anm.">Die Matrixmultiplikation kann mit dem Schema von Falk sehr einfach nachvollzogen werden. Man könnte beispielsweise folgendes Schema konstruieren:

{{#if:c}

    \underline{R_z} \cdot \vec{P}
   &
    \color[rgb]{0.3,0.3,0.3}
    \begin{pmatrix}
       P_x \\ P_y \\ P_z
    \end{pmatrix}

\\ \hline

    \color[rgb]{0.3,0.3,0.3}
    \begin{pmatrix}
       \cos \varphi & -\sin \varphi & 0 \\
       \sin \varphi &  \cos \varphi & 0 \\            
       0        &  0           & 1 
    \end{pmatrix}
   & 
    \color[rgb]{0.6,0,0}
    \begin{pmatrix}
       P_x \cos \varphi - P_y \sin \varphi \\
       P_x \sin \varphi + P_y \cos \varphi \\
       P_z
    \end{pmatrix}

\end{array} </math>

|
<math> \begin{array}{c
(c}
    \underline{R_z} \cdot \vec{P}
   &
    \color[rgb]{0.3,0.3,0.3}
    \begin{pmatrix}
       P_x \\ P_y \\ P_z
    \end{pmatrix}

\\ \hline

    \color[rgb]{0.3,0.3,0.3}
    \begin{pmatrix}
       \cos \varphi & -\sin \varphi & 0 \\
       \sin \varphi &  \cos \varphi & 0 \\            
       0        &  0           & 1 
    \end{pmatrix}
   & 
    \color[rgb]{0.6,0,0}
    \begin{pmatrix}
       P_x \cos \varphi - P_y \sin \varphi \\
       P_x \sin \varphi + P_y \cos \varphi \\
       P_z
    \end{pmatrix}

\end{array}

</math>)
|
<math> \begin{array}{c

}}

</ref> einer Matrix <math>\underline{R_z} \in \mathbb{R}^{3 \times 3}</math> und dem Vektor <math>\vec{P}</math> entsteht:

{{#if:

|
4
()
|
4

}}

Die Matrix <math>\underline{R_z}</math> ist die Rotationsmatrix für eine Drehung um die z-Achse. Die nachfolgende Tabelle gibt einen Überblick über die elementaren Rotationsmatrizen; die Herleitung für die übrigen Achsen kann analog erfolgen. Die letzte Zeile definiert eine Rotationsmatrix für eine Drehung um eine beliebige Achse <math>\vec{n}</math>, die durch den Koordinatenursprung verläuft und deren Länge <math>\| \vec{n} \|</math> (euklidische Norm<ref group="Anm.">Die euklidische Norm wird auch als 2-Norm bezeichnet.</ref>) auf 1 normiert ist. Für diese spezielle Rotationsmatrix bleibt die Herleitung aus Gründen des Umfangs an dieser Stelle aus; der geneigte Leser sei auf [1] verwiesen.


Rotationsachse Rotationsmatrix
x-Achse
<math>(1,0,0)^\mathrm{T}</math>
<math>\underline{R_x}(\varphi) = \begin{pmatrix}

1 & 0 & 0 \\ 0 & \cos \varphi & -\sin \varphi \\ 0 & \sin \varphi & \cos \varphi \end{pmatrix}</math>

y-Achse
<math>(0,1,0)^\mathrm{T}</math>
<math>\underline{R_y}(\varphi) = \begin{pmatrix}

\cos \varphi & 0 & \sin \varphi \\

  0         & 1 &  0          \\

-\sin \varphi & 0 & \cos \varphi \end{pmatrix}</math>

z-Achse
<math>(0,0,1)^\mathrm{T}</math>
<math>\underline{R_z}(\varphi) = \begin{pmatrix}

\cos \varphi & -\sin \varphi & 0 \\ \sin \varphi & \cos \varphi & 0 \\

  0        &  0           & 1

\end{pmatrix}</math>

\vec{n} \| = 1</math> <math>\underline{R_{\vec{n}}}(\varphi) = \begin{pmatrix}

\cos \varphi +n_x^2 \left(1-\cos \varphi \right) & n_x n_y \left(1-\cos \varphi \right) - n_z \sin \varphi & n_x n_z \left(1-\cos \varphi \right) + n_y \sin \varphi \\

  n_y n_x \left(1-\cos \varphi \right) + n_z \sin \varphi  & \cos \varphi + n_y^2\left(1-\cos \varphi \right) &   n_y n_z \left(1-\cos \varphi \right) - n_1 \sin \varphi \\
n_z n_x \left(1-\cos \varphi \right) - n_y \sin \varphi &  n_z n_y \left(1-\cos \varphi \right) + n_x \sin \varphi & \cos \varphi + n_z^2\left(1-\cos \varphi\right)

\end{pmatrix}</math>

Verschiebung (Translation)

{{#if:

|
()
|

}}


Anmerkungen

<references group="Anm." />