Facebook Social Icon Twitter Social Icon YouTube Social Icon

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

Revision as of 15:00, 27 June 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 überraschend 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 $\vec{P} \in \mathbb{R}^3$ soll den Ortsvektor eines Punktes im dreidimensionalen Raum ($\mathbb{R}^3$) in kartesischen Koordinaten beschreiben. Der Vektor $\vec{P}$ besteht aus den Komponenten

$$\vec{P} = \begin{pmatrix} P_x \\ P_y \\ P_z \end{pmatrix}$$

mit $P_x, P_y, P_z \in \mathbb{R}$.

miniatur|rechts|300px|Ein Punkt im dreidimensionalen Raum $\mathbb{R}^3$. Das Schaubild zeigt die Zerlegung seines Ortsvektors $\vec{P}$ in seine Komponenten $\tiny P_x$, $P_y$ und $P_z$.

Dieser Punkt kann nun verändert (transformiert) werden; dabei entsteht ein neuer, transformierter Punkt $\vec{P}^\star \in \mathbb{R}^3$ mit $\vec{P}^\star = \left( P_x^\star, P_y^\star, P_z^\star \right)^\mathrm{T}$. Folgende Transformationen des Ursprungspunktes $\vec{P}$ 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 $\vec{P}$, sondern von einer Menge $\mathcal{P}$ von Punkten $\vec{P}_i$ 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 $\vec{P}$, dessen Ortsvektor und die Abszisse des kartesischen Koordinatensystems einen beliebigen Winkel $\alpha \in [0, 2 \pi[$ einschließt. Dieser Punkt $\vec{P}$ soll durch Rotation um einen beliebigen Winkel $\varphi \in [0, 2\pi[$ bezüglich des Koordinatenursprungs $\vec{o} = (0,0,0)^\mathrm{T}$ <ref group="Anm." name="origo" /> in einen neuen Punkt $\vec{P}^\star$ 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 $\tiny \underline{R_z}$

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

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

$$\vec{P} = \begin{pmatrix} P_x \\ P_y \\ P_z \end{pmatrix} = \begin{pmatrix} r \cos \alpha \\ r \sin \alpha \\ P_z \end{pmatrix}$$

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

$$\begin{align}\vec{P}^\star = \begin{pmatrix} P_x^\star \\ P_y^\star \\ P_z^\star \end{pmatrix} &= \begin{pmatrix} r \cos(\alpha + \varphi) \\ r \sin(\alpha + \varphi) \\ P_z \end{pmatrix} \\ &\xlongequal[\text{theoreme}]{\text{Additions-}} \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}$$

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

$$\vec{P}^\star = \begin{pmatrix} P_x \cos \varphi - P_y \sin \varphi \\ P_y \cos \varphi + P_x \sin \varphi \\ P_z \end{pmatrix}.$$

Man sieht leicht ein, dass Gleichung (3) auch durch eine Matrixmultiplikation<ref group="Anm." name="schema_von_falk" /><ref name="schema_von_falk2" /><ref name="schema_von_falk1" /> einer Matrix $\underline{R_z} \in \mathbb{R}^{3 \times 3}$ und dem Vektor $\vec{P}$ entsteht:

$$\vec{P}^\star = \underline{R_z} \cdot \vec{P} = {\color[rgb]{0.6,0,0} \begin{pmatrix} \cos \varphi & -\sin \varphi & 0 \\ \sin \varphi & \cos \varphi & 0 \\ 0 & 0 & 1 \end{pmatrix}} \cdot \begin{pmatrix} P_x \\ P_y \\ P_z \end{pmatrix} = \begin{pmatrix} P_x \cos \varphi - P_y \sin \varphi \\ P_x \sin \varphi + P_y \cos \varphi \\ P_z \end{pmatrix}.$$

Die Matrix $\underline{R_z}$ (in Gleichung (4) farblich hervorgehoben) 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 $\vec{n}$, die durch den Koordinatenursprung verläuft und deren Länge $\| \vec{n} \|$ (euklidische Norm<ref group="Anm." name="euklidische_norm" />) 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 <ref name="3dsource" /> verwiesen.


Übersicht der elementaren Rotationsmatrizen
Rotationsachse Rotationsmatrix
x-Achse
$(1,0,0)^\mathrm{T}$
$\underline{R_x}(\varphi) = \begin{pmatrix}

1 & 0 & 0 \\ 0 & \cos \varphi & -\sin \varphi \\ 0 & \sin \varphi & \cos \varphi \end{pmatrix}$

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

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

  0         & 1 &  0          \\

-\sin \varphi & 0 & \cos \varphi \end{pmatrix}$

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

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

  0        &  0           & 1

\end{pmatrix}$

\vec{n} \| = 1$ $\small \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}$


Beispiel

Aufgabenstellung

Gegeben sei ein Quader mit der Punktmenge $\mathcal{P}_Q = \left\{\vec{P}_1, \vec{P}_2, \ldots, \vec{P}_8\right\}$, wobei

$\vec{P}_1 = (1, -1, -1)^\mathrm{T}, \vec{P}_2 = (1, -1, 1)^\mathrm{T}, \vec{P}_3 = (1, 1, 1)^\mathrm{T}, \vec{P}_4 = (1, 1, -1)^\mathrm{T},$
$\vec{P}_5 = (-1, -1, -1)^\mathrm{T}, \vec{P}_6 = (-1, -1, 1)^\mathrm{T}, \vec{P}_7 = (-1, 1, 1)^\mathrm{T}, \vec{P}_8 = (-1, 1, -1)^\mathrm{T}$

die Eckpunkte des Quaders und die Verbindungsvektoren<ref group="Anm." name="verbindungsvektor" />

$\vec{P}_{12}, \vec{P}_{23}, \vec{P}_{34}, \vec{P}_{41}, \vec{P}_{56}, \vec{P}_{67}, \vec{P}_{78}, \vec{P}_{85}, \vec{P}_{15}, \vec{P}_{26}, \vec{P}_{37}, \vec{P}_{48}$

die Kanten des Quaders sind. Der Quader soll nun um 30° um die $z$-Achse gedreht werden.


Template:Hilfe:Einführung in die Quaternionen-Mathematik/x3d-beispiel-würfel


Lösung

Zur Lösung kann die Rotationsmatrix $\underline{R_z}(\varphi)$ (siehe obige Übersicht) mit

Template:Hilfe:Einführung in die Quaternionen-Mathematik/x3d-beispiel-würfel-gedreht

{{#ifeq: | | |

{{{3}}}

{{{4}}}
}}{{#ifeq: | | |

{{{5}}}

{{{6}}}
}}{{#ifeq: | | |

{{{7}}}

{{{8}}}
}}{{#ifeq: | | |

{{{9}}}

{{{10}}}
}}{{#ifeq: | | |

{{{11}}}

{{{12}}}
}}{{#ifeq: | | |

{{{13}}}

{{{14}}}
}}{{#ifeq: | | |

{{{15}}}

{{{16}}}
}}{{#ifeq: | | |

{{{17}}}

{{{18}}}
}}{{#ifeq: | | |

{{{19}}}

{{{20}}}
}}{{#ifeq: | | |

{{{21}}}

{{{22}}}
}}{{#ifeq: | | |

{{{23}}}

{{{24}}}
}}{{#ifeq: | | |

{{{25}}}

{{{26}}}
}}


Anmerkungen

<references group="Anm."> <ref name="origo">Nebenbei bemerkt: $\small \vec{o}$ steht für Origo (lat. „Herkunft, Ursprung“), also für die Koordinaten des Koordinatenursprungs.</ref> <ref name="schema_von_falk">Die Matrixmultiplikation kann mit dem Schema von Falk sehr einfach nachvollzogen werden. Man könnte beispielsweise folgendes Schema konstruieren:

$

\small \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} $</ref> <ref name="euklidische_norm">Die euklidische Norm wird auch als 2-Norm bezeichnet.</ref> <ref name="verbindungsvektor">Der Verbindungsvektor $\small \vec{P}_{AB}$ zwischen zwei Punkten $\small \vec{P}_A$ und $\small \vec{P}_B$ lässt sich durch Subtraktion beider Vektoren ermitteln: $\small \vec{P}_{AB} = \vec{P}_B - \vec{P}_A$.</ref> <ref name="umrechnung-deg-rad">Die Umrechnung eines Winkels $\small \alpha_{[\text{deg}]}$ im Gradmaß zu dem entsprechenden Winkel $\small \alpha_{[\text{rad}]}$ im Bogenmaß kann durch Multiplikation mit $\small \frac{\pi}{180\,^\circ}$ erfolgen:

$\small \alpha_{[\text{rad}]} = \alpha_{[\text{deg}]} \cdot \frac{\pi}{180\,^\circ}$</ref>

</references>


Einzelnachweise

1 }}
     | references-column-width 
     | references-column-count references-column-count-30em }}
   | {{#if: 
     | references-column-width }} }}" style="{{#if: 30em
   | {{#iferror: {{#ifexpr: 30em > 1 }}
     | column-width: 30em; -moz-column-width: 30em; -webkit-column-width: 30em;
     | Template:Column-count }}
   | {{#if: 
     | column-width: {{{colwidth}}}; -moz-column-width: {{{colwidth}}}; -webkit-column-width: {{{colwidth}}}; }} }}">

<references group=""><ref name="3dsource">Kern, Thomas: Berechnung der allgemeinen Rotationsmatrix. PDF-Datei, http://www.3dsource.de/_download/Anhang_Rotation.pdf. Abruf: 02. März 2011</ref> <ref name="schema_von_falk1">Zurmühl, Rudolf: Matrizen und ihre technischen Anwendungen. 4. neubearbeitete Auflage. Springer-Verlag, Berlin 1964. S. 17 ff.</ref>

<ref name="schema_von_falk2">Falk, Sigurd: Ein übersichtliches Schema für die Matrizenmultiplikation. In: Zeitschrift für Angewandte Mathematik und Mechanik, Bd. 31 (4-5), S. 152-153. Wiley-VCH Verlag, 1951. DOI:10.1002/zamm.19510310409{{#if:1||DOI:10.1002/zamm.19510310409}}. ISSN 1521-4001.</ref></references>


Kategorie:Math