Freie Rotation im Raum



Ähnliche Dokumente
Transformation Allgemeines Die Lage eines Punktes kann durch einen Ortsvektor (ausgehend vom Ursprung des Koordinatensystems

y x x y ( 2x 3y + z x + z

Vektoren. Kapitel Skalare, Vektoren, Tensoren. 3.2 Vektoren

2.3.4 Drehungen in drei Dimensionen

Vektoren - Die Basis

Lineare Algebra und Computer Grafik

3.1 Motivation. - Mit (mehreren) Koordinatentransformationen wird das Objektsystem in das Gerätesystem transformiert.

Lineare Algebra. Mathematik II für Chemiker. Daniel Gerth

Vektoren und Matrizen

Einleitung 2. 1 Koordinatensysteme 2. 2 Lineare Abbildungen 4. 3 Literaturverzeichnis 7

Transformation - 3. Für "übliche" Anwendungen in der Geometrie ist es sinnvoll, bei Transformationen eine gleiche

Kapitel 3. Transformationen

Übungsblatt

Transformation - Homogene Koordinaten. y + b )

Lösbarkeit linearer Gleichungssysteme

Das Wort Vektor kommt aus dem lateinischen und heißt so viel wie "Träger" oder "Fahrer".

7. Wie lautet die Inverse der Verkettung zweier linearer Abbildungen? 9. Wie kann die Matrixdarstellung einer linearen Abbildung aufgestellt werden?

Affine Koordinatentransformationen

3D-Transformationen. Kapitel Translation Skalierung

Kreis - Tangente. 2. Vorbemerkung: Satz des Thales Eine Möglichkeit zur Bestimmung der Tangente benutzt den Satz des Thales.

1.4 Gradient, Divergenz und Rotation

1 Fraktale Eigenschaften der Koch-Kurve

Lernmaterialblatt Mathematik. Vektorrechnung eine Einführung. Anwendung Mathematik I. Einleitung:

Reflexion - Teil Formel unter Verwendung von Vektoren

Vektoren - Basiswechsel

4 Lineare Abbildungen

1 Vorlesungen: und Vektor Rechnung: 1.Teil

Quadriken. Quadriken und Hauptachsentransformation. Lineare Algebra I, WS 10/11 Ingo Blechschmidt 13. März 2011

09. Lineare Abbildungen und Koordinatentransformationen

2 Die Algebra der Matrizen

& sind die Vektorkomponenten von und sind die Vektorkoordinaten von. A x. a) Der Betrag eines Vektors

Lineare Algebra. 1 Lineare Abbildungen

Matrizen. Spezialfälle. Eine m nmatrix ist ein rechteckiges Zahlenschema mit. m Zeilen und n Spalten der Form. A = (a ij ) =

1 Analytische Geometrie

Vektoren. Jörn Loviscach. Versionsstand: 11. April 2009, 23:42

8. Übungsblatt zur Mathematik I für Maschinenbau

Darstellungstheorie. Vortag von Heiko Fischer - Proseminar QM

Computergrafik Sommersemester 2004 Übungen

Mathematische Grundlagen

Vektoren. Jörn Loviscach. Versionsstand: 30. März 2010, 18:06 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung.

Matrizen und Determinanten, Aufgaben

3.3. Drehungen und Spiegelungen

Universität Stuttgart Physik und ihre Didaktik PD Dr. Holger Cartarius. Matrizen. a 1,1 a 1,2 a 1,n a 2,1 a 2,2 a 2,n A = a m,1 a m,2 a m,n

Projektive Geometrie

Computergrafik Universität Osnabrück, Henning Wenke,

Lineare Abhängigkeit und Unabhängigkeit. 1-E Ma 1 Lubov Vassilevskaya

YOUNG SCIENTISTS. 4 dimensionale komplexe Zahlen in der Computergrafik. Bastian Weiß 19. Mai 2017 INSTITUT FÜR ANGEWANDTE GEOMETRIE

Helmuts Kochrezept Nummer 5:

Vektoren - Einführung

Kapitel 3: Geometrische Transformationen

Fragestellung: Gegeben eine Bahnkurve bezüglich eines raumfesten Koordinatensystems (KS) K, beschreibe die Bewegung bezüglich eines bewegten KS K'.

1. Vektoralgebra 1.0 Einführung Vektoren Ein Vektor ist eine Größe, welche sowohl einen Zahlenwert (Betrag) als auch eine Richtung hat.

3 Matrizenrechnung. 3. November

Lineare Algebra: Theorie und Anwendungen

Vektoren und Matrizen

Wiederholung und Zusammenfassung: Vektoranalysis

Vektorgeometrie Ebenen 1

In den USA verwendet man statt dessen eckige Klammern, was sich in der Software niederschlägt (mit Ausnahmen wie Wolfram Alpha):

Aus dem Beispiel lässt sich ablesen (und auch beweisen, siehe Mathematikvorlesung): Die Einheitsvektoren des Koordinatensystems K sind die Spalten der

In den USA verwendet man statt dessen eckige Klammern, was sich in der Software niederschlägt (mit Ausnahmen wie Wolfram Alpha):

Lernunterlagen Vektoren in R 2

Vorkurs: Mathematik für Informatiker

6. Rechnen mit Matrizen.

Matrizen. Jörn Loviscach. Versionsstand: 12. April 2010, 19:00 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung.

3D-Transformationen. Kapitel Translation Skalierung

Übungsaufgaben Vektoren

Lineare Abbildungen (Teschl/Teschl 10.3, 11.2)

Mathematische Erfrischungen III - Vektoren und Matrizen

Computergrafik 1 Übung

Vorkurs: Mathematik für Informatiker

Mathematik-1, Wintersemester Vorlesungsplan, Übungen, Hausaufgaben

Vektoralgebra Anwendungen der Vektorrechnung VEKTORRECHNUNG. Prof. Dr. Dan Eugen Ulmet. Hochschule Esslingen 1/64

Matrizen. Jörn Loviscach

Matrizen. Jörn Loviscach. Versionsstand: 14. April 2009, 00:25

Orthonormalbasis. Orthogonalentwicklung

Vorkurs: Mathematik für Informatiker

BC 1.2 Mathematik WS 2016/17. BC 1.2 Mathematik Zusammenfassung Kapitel II: Vektoralgebra und lineare Algebra. b 2

Symmetrie von Naturgesetzen - Galilei-Transformationen und die Invarianz der Newton schen Gesetze

bzw. eine obere Dreiecksmatrix die Gestalt (U: upper)

Was ist Robotik? Robotik heute:

Lineare Algebra und Numerische Mathematik für D-BAUG

1 Krummlinige Koordinatensysteme

Drehung. Die orthogonale n n-matrix 1 0. c s. Zeile j. s c

Mathematische Probleme, SS 2015 Montag $Id: quadratisch.tex,v /06/22 12:08:41 hk Exp $

1 Matrizenrechnung zweiter Teil

Vorlesung Mathematik 2 für Informatik

Transkript:

Freie Rotation im Raum Quaternionen und Matrizen Inhaltsverzeichnis 1 Grundlagen 2 1.1 Ziel................................................... 2 1.2 Was ist ein Koordinatensystem?.................................. 2 1.3 Transformationsmatrizen....................................... 2 2 Beschreibung einer Kamera 4 2.1 Matrizen................................................ 4 2.1.1 Herleitung der Vorgehensweise............................... 4 2.1.2 Zusammenfassung...................................... 5 2.2 Quaternionen............................................. 5 2.2.1 Warum Quaternionen?.................................... 5 2.2.2 Eine Drehung mit einer Quaternion formulieren...................... 6 2.2.3 Quaternionenmultiplikation................................. 7 2.2.4 Repräsentation im Speicher................................. 7 2.2.5 Herleitung der Kamerabeschreibung............................ 7 2.2.6 Zusammenfassung...................................... 8 2.3 Verschiebung der Kamera...................................... 8 3 Weitergehende Infos und Copyleft 1

Grundlagen 2 1 Grundlagen 1.1 Ziel Es soll beschrieben werden, wie man sich lokale Koordinatensysteme zu Nutze machen kann, um damit eine freie Kamerapositierung im Raum vorzunehmen zum Beispiel für eine Weltraumsimulation. Dabei werden zwei mögliche Wege erklärt: Quaternionen und Matrizen. Ich werde versuchen, alles möglichst anschaulich zu erklären, sodass die Thematik möglichst ohne größeres Vorwissen verständlich ist. Auf weitreichende Beweise oder Herleitungen der Formeln wird aus Gründen der Übersichtlichkeit verzichtet. An dieser Stelle sei auf die Informationsquellen am Ende des Dokuments verwiesen. 1.2 Was ist ein Koordinatensystem? Die Wikipedia meint dazu: Ein Koordinatensystem dient der Positionsangabe im Raum. Das ist natürlich eine ziemlich abstrakte Definition. Für uns ist vielmehr interessant, dass wir für diese Positionsangabe im dreidimensionalen Raum drei sogenannte Basisvektoren benötigen. Über diese kann dann jeder beliebige Punkt erreicht werden. Im gewöhnlichen kartesischen System sind diese Basisvektoren das, was allgemein als Koordinatenachse bezeichnet wird: e x = 1, e y = 1, e z = 1 Will man jetzt zum Punkt (5, 2, 3), dann kann man diesen über eine Linearkombination der Basisvektoren erreichen: 1 5 5 + 2 1 + 3 = 2 1 3 Wie man sieht, stehen alle Basisvektoren paarweise senkrecht aufeinander, weswegen das kartesische Koordinatensystem auch orthogonal genannt wird. Zusätzlich hat jeder Vektor die Länge 1, wodurch das System auch orthonormal wird. Das ist eine Besonderheit, müsste keinesfalls so sein und wird später noch eine Rolle spielen. Ein Koordinatensystem wird dann lokal, wenn es einem Objekt zugeordnet wird und sich vom globalen System unterscheidet. Anschaulich: Jedes Objekt im Raum hat eine Orientierung, aber wenn man sich in die Position dieses Objektes hineinversetzt, dann gibt es hier immernoch ein oben, rechts und vorne. Am besten macht man sich das klar, indem man sich drei Stifte oder die rechte Hand nimmt, sich diese vor den Kopf hält und dann Kopf und Stifte gemeinsam um 9 nach rechts dreht. Man blickt immernoch aus derselben Perspektive auf die Stifte wie vor der Drehung. Bewegt man jetzt aber den Kopf zurück und lässt die Stifte unverändert an ihrer Position, dann hat man den Kopf zurück ins globale System gedreht und sieht: Die Stifte, die ein lokales System simulieren, sind jetzt gegenüber dem globalen System verdreht. 1.3 Transformationsmatrizen Matrizen können genutzt werden, um Vektoren von einem Koordinatensystem in ein anderes zu transformieren. Solange beide Systeme im Ursprung verankert (also nicht verschoben, sondern nur gedreht oder skaliert)

Grundlagen 3 sind, funktioniert das über eine einfache Multiplikation: GT L v = 1 1 1 1 L = 1 G Was wurde hier gemacht? Zuerst die Schreibweise: GT L bedeutet, dass dies eine Transformationsmatrix meint, die lokale Koordinaten in globale Koordinaten transformiert. Da Vektoren von rechts an Matrizen multipliziert werden, bietet sich diese scheinbar verkehrte Schreibweise an. Was ist nun v? v sieht aus wie ein Einheitsvektor in x-richtung, ist es auch. Das kleine L im Index deutet aber an, dass hiermit ein Einheitsvektor in x-richtung im lokalen System gemeint ist. Das Ergebnis ist dann semantisch derselbe Vektor, aber im globalen System. v wurde also vom lokalen ins globale System umgerechnet. Anschaulich: Obiges G T L beschreibt ein Koordinatensystem, das um 9 nach rechts gedreht ist gegenüber dem globalen System (siehe vorheriges Beispiel mit den Stiften). Wenn man sich also in dieses lokale System hineinversetzt, dann ist die eigene x-richtung natürlich nach wie vor (1,, ). Blickt man aber von außen auf dieses System, dann stimmt das nicht mehr tatsächlich ist von außen betrachtet die x-richtung dieses Systems in globalen Koordinaten (, 1, ), zeigt also in die globale y-richtung. Da Transformationsmatrizen orthonormal sind, kann man sie sehr leicht invertieren, indem man sie einfach transponiert: ( G T L ) T = L T G Somit erhält man also eine Matrix, die globale Koordinaten in lokale umrechnet. Solche Matrizen haben nun eine sehr schöne Eigenschaft: Man kann sie hintereinander ausführen und heraus kommt eine einzelne Matrix, die den gesamten Prozess beschreibt. Zu beachten ist lediglich, dass man von rechts nach links lesen muss: T Gesamt = T Rotation 3 T Rotation 2 T Rotation 1 Rechnet man das aus, dann erhält man eine Beschreibung des gesamten Vorgangs in der Matrix T Gesamt. Das heißt aber, dass nun die Rechnung v = T Gesamt v den Vektor v erst gemäß Rotation 1 dreht, dann gemäß Rotation 2 und zum Schluss gemäß Rotation 3. Beachten muss man letztendlich, dass Matrizenmultiplikation nicht kommutativ ist assoziativ ist sie aber.

Beschreibung einer Kamera 4 2 Beschreibung einer Kamera Was wir letztendlich erreichen wollen, ist also eine Kamera, die wir jederzeit möglichst einfach um ihre lokalen Achsen drehen können. Das heißt, bevor wir irgendetwas zeichnen, wollen wir uns in die Kamera hineinversetzen und aus ihrer Sicht die Szene darstellen. Was wir also suchen, ist eine Möglichkeit, alle zu zeichnenden Vektoren zur Basis des lokalen Systems der Kamera darzustellen oder kurz gesagt: L T G. 2.1 Matrizen 2.1.1 Herleitung der Vorgehensweise Allein über Matrizen kommt man schon zum Ziel. Folgende Vorgehensweise: Eine Matrix A soll das lokale System der Kamera repräsentieren, also die Umrechnung vom globalen ins lokale System realisieren. Zu Beginn sollen beide System identisch sein, das heißt initial ist: 1 A = 1 1 Wenn wir jetzt die Kamera neu drehen, heißt das formal: A = A R Die zu zeichnenden Vektoren werden also zuerst um eine Achse gedreht und dann (wie auch immer dieses nun aussehen mag) in das lokale System A transformiert. Wie oben erklärt, lässt sich der gesamte Prozess dann im neuen Wert A speichern wodurch de facto das lokale System dauerhaft verändert wurde. In einem elementaren Rotationsschritt wird also eine reguläre Drehmatrix an das vorhandene A multipliziert. Alternativ kann man also A auch als gesammelte Verkettung aller Rotationen interpretieren, die der Nutzer durchgeführt hat. Wie sieht dieses R aus? Man berechnet eine Drehmatrix, die eine Drehung um eine beliebige Achse und einen beliebigen Winkel ϕ beschreibt. Wir wollen um die lokalen Achsen des Systems drehen, das heißt, wir müssen hier beispielhaft am x-vektor einen lokalen Basisvektor ins globale System umrechnen. Ist A wie oben als L T G gegeben, dann sieht der Weg zu unserer Rotationsachse r so aus: 1 r = A T A müsste also vorher transponiert werden, da der Einheitsvektor in lokalen Koordinaten vorliegt. Dieser Vorgang kann erheblich vereinfacht werden, da wir immer nur um die Basisachsen drehen wollen. Wenn man sich anschaut, was bei den einzelnen Multiplikationen herauskommt, dann sieht man, dass die Achse für eine Rotation um x die erste Zeile von A, L

Beschreibung einer Kamera 5 eine Rotation um y die zweite Zeile von A, eine Rotation um z die dritte Zeile von A ist. Die Transponierung ist hier schon mit einbezogen (da wir die Zeilen und nicht die Spalten wählen). Eine Drehung um die Achse r = (x, y, z) (Einheitsvektor) und Winkel ϕ (Bogenmaß!) wird dann beschrieben durch folgendes Monstrum: cos ϕ + x 2 (1 cos ϕ) xy(1 cos ϕ) z sin ϕ xz(1 cos ϕ) + y sin ϕ R = yx(1 cos ϕ) + z sin ϕ cos ϕ + y 2 (1 cos ϕ) yz(1 cos ϕ) x sin ϕ zx(1 cos ϕ) y sin ϕ zy(1 cos ϕ) + x sin ϕ cos ϕ + z 2 (1 cos ϕ) Wenn nun das eigentliche Bild gezeichnet werden soll, muss zuerst für jeden Vektor v stattfinden: v = A v Tatsächlich wird dann nur v gezeichnet. 2.1.2 Zusammenfassung Noch einmal knapp zusammengefasst: Pro Rotationsschritt, wenn zum Beispiel eine Taste gedrückt wird: Gewünschte Rotationsachse auslesen (aus den Zeilen von A). Drehmatrix R aufstellen. A aktualisieren mit A = A R. Zum Zeichnen der Szene jeden Vektor umrechnen (v = A v) und dann nur v zeichnen. 1 2.2 Quaternionen 2.2.1 Warum Quaternionen? Die Beschreibung mit Matrizen funktioniert zwar in der Theorie sehr gut, es gibt aber ein Problem: Kein Computer rechnet exakt. Durch die häufigen Matrix-Matrix-Multiplikationen pflanzen sich im Laufe der Zeit kleine Rechenfehler fort. Die Folge ist eine irgendwie gestauchte oder verzerrte Darstellung, da die Matrix A nicht mehr orthonormal ist. Man kann Matrizen zwar nachträglich orthonormalisieren, das ist aber sehr aufwändig. Quaternionen umgehen das Problem. Quaternionen sind eine Erweiterung der reellen Zahlen auf vier Dimensionen ähnlich den komplexen Zahlen, die aber nur zwei Dimensionen besitzen. Sie sind sehr vielfältig einsetzbar, können aber auch zur Beschreibung von Orientierungen im Raum genutzt werden. Allgemein hat eine Quaternion die Form: a q = b i c j d k 1 Für OpenGL bietet sich hier glmultmatrix an, um die aktuelle Matrix auf dem Stack mit A zu multiplizieren.

Beschreibung einer Kamera 6 i, j und k sind dabei der imaginären Einheit bei den komplexen Zahlen ähnlich mit i 2 = j 2 = k 2 = i j k = 1. a ist dabei der sogenannte skalare Anteil und b, c, d der vektorielle Anteil. Die anderen drei imaginären Zahlen sind für uns nicht weiter interessant. Ich werde sie daher jetzt auch nicht weiter aufschreiben, auch wenn das gewisse Gefahren birgt. Dafür ist es wesentlich übersichtlicher. Für die Herleitungen der Formeln dürfen sie natürlich keinesfalls ausgelassen werden. Aus einer Einheitsquaternion lässt sich eine Matrix ableiten: 1 2(c 2 + d 2 ) 2(bc ad) 2(bd + ac) T q = 2(bc + ad) 1 2(d 2 + b 2 ) 2(cd ab) 2(bd ac) 2(cd + ab) 1 2(b 2 + c 2 ) Diese Matrix beschreibt nun eine Transformation in das lokale Koordinatensystem, das durch die Orientierung dieser Quaternion beschrieben wird sie entspricht also der Form L T G. Was bringt das jetzt, wo wir eine solche Matrix auch schon vorher hatten? Der Punkt ist, dass diese Matrix immer orthonormal ist, falls die Quaternion eine Einheitsquaternion war. Das heißt im Umkehrschluss, dass wir immer zu einer orthonormalen Matrix kommen können, indem wir die Quaternion normieren! Und dieser Prozess ist sehr einfach. Die Länge einer Quaternion ist gegeben durch: q = a 2 + b 2 + c 2 + d 2 Normieren können wir eine beliebige Quaternion q, indem wir komponentenweise durch ihre Länge teilen. Dann ist die zugehörige Einheitsquaternion q e : a a q q e = 1 q b b c = q c d q d q Mit diesem einfachen Vorgang ist sichergestellt, dass die resultierende Matrix orthonormal sein wird. 2 Übrigens: Man kann auch direkt mit Quaternionen andere Vektoren rotieren. Der Grund, warum ich hier eine Matrix generiere, ist, dass OpenGL und vermutlich auch viele andere Frameworks eher auf Matrizen ausgelegt sind, weswegen zum Rendern am Ende eine Matrix das einfachste ist. 2.2.2 Eine Drehung mit einer Quaternion formulieren Es fehlt noch eine Möglichkeit, eine einzelne Drehung um eine Achse mit einer Quaternion zu beschreiben, denn Transformationsmatrizen helfen hier nicht weiter. Hat man eine normierte Achse r = (x, y, z) und einen Winkel ϕ im Bogenmaß, dann lässt sich eine Quaternion aufstellen, die genau diese Drehung realisiert. Seien dazu: ( ϕ ) C = cos 2 ( ϕ ) S = sin 2 2 Bis auf kleine Rechenfehler in diesem konkreten Schritt natürlich aber diese pflanzen sich nicht fort.

Beschreibung einer Kamera 7 Dann: C q R = x S y S z S Auf gut Deutsch wird der komplette Vektor r mit S skaliert, seine Komponenten als vektorieller Anteil von q R gesetzt und C als skalarer Anteil. Das war s. 2.2.3 Quaternionenmultiplikation Quaternionen zu multiplizieren ist ein wenig Schreibarbeit. Außerdem ist ganz wichtig: Die Multiplikation ist nicht kommutativ. Gegeben zwei Quaternionen q = (x, x 1, x 2, x 3 ) und p = (y, y 1, y 2, y 3 ), dann ist: x y x 1 y 1 x 2 y 2 x 3 y 3 q p = x y 1 + x 1 y + x 2 y 3 x 3 y 2 x y 2 x 1 y 3 + x 2 y + x 3 y 1 x y 3 + x 1 y 2 x 2 y 1 + x 3 y 2.2.4 Repräsentation im Speicher Wer sich fragt, wie man eine Quaternion und vorallem die imaginären Einheiten im Speicher darstellen soll, der möge einfach ein Array mit vier reellen Einträgen nehmen und sich nicht weiter um die imaginären Einheiten kümmern: class Quat4 { private: double q[4]; } public: Quat4() { q[] = ; // scalar q[1] = ; q[2] = ; q[3] = ; }... Ähnlich wie bei komplexen Zahlen spielen die imaginären Einheiten bei der numerischen Berechnung nicht die ausschlaggebende Rolle. 2.2.5 Herleitung der Kamerabeschreibung Wie kann man das nun nutzen, um die Kamera besser zu beschreiben?

Beschreibung einer Kamera 8 Statt einer Matrix A, die wir zur Speicherung des lokalen Systems nutzen, merken wir uns eine Quaternion q. Der Anfangswert ist ein spezieller Wert, der der Einheitsmatrix entspricht: 1 q = Wie Matrizen lassen sich auch Quaternionen verketten, also führen wir bei jedem Rotationsschritt aus: q = q q R, wobei q R eine geeignete Drehquaternion um die gewünschte Achse ist. Danach normieren wir das neue q, um die Orthonormalität sicherzustellen. Die Schwierigkeit besteht jetzt darin, die richtige Rotationsachse zu finden, da wir sie nicht mehr direkt aus der Quaternion ablesen können. Eine triviale Möglichkeit ist, vorübergehend aus der Quaternion die dazugehörige Rotationsmatrix R zu generieren. Erinnerung: R transformiert vom globalen ins lokale System. Analog zur Matrizenbeschreibung kommen wir jetzt an die gewünschte Achse, indem wir die richtige Zeile von R auslesen (siehe oben). Wir stellen dann wie oben beschrieben die Drehquaternion q R auf, aktualisieren damit q und verwerfen R. 2.2.6 Zusammenfassung Noch einmal knapp zusammengefasst: Pro Rotationsschritt, wenn zum Beispiel eine Taste gedrückt wird: Aus dem aktuellen q die zugehörige Rotationsmatrix R aufstellen. Gewünschte Rotationsachse auslesen (aus den Zeilen von R). Drehquaternion q R aufstellen. q aktualisieren mit q = q q R. q normalisieren. Zum Zeichnen der Szene aus q die Rotationsmatrix R aufstellen. Jeden Vektor umrechnen (v = R v) und dann nur v zeichnen. 2.3 Verschiebung der Kamera Bisher wurde nur besprochen, wie man die Rotation der Kamera realisieren könnte. Höchstwahrscheinlich will man sie aber auch im Raum frei platzieren oder sich entlang ihrer Achsen bewegen. Eine sehr einfache Variante ist, der Kamera einen Ortsvektor p zu spendieren. Diesen kann man dann wie folgt benutzen:

Beschreibung einer Kamera 9 Will man vorwärts oder rückwärts fliegen, also entlang einer Achse des lokalen System der Kamera, dann reicht es, den Ortsvektor wie folgt zu aktualisieren: p = p + α r Dieses r ist dabei der normalisierte Achsenvektor in globalen Koordinaten. Man kann ihn also genauso gewinnen wie die Achse für die Drehung jenachdem, welches Verfahren man einsetzt. α ist ein reiner Faktor, der bestimmt, wie weit man sich in einem Schritt fortbewegen will. Beim Zeichnen ist darauf zu achten, diese Verschiebung vor der Rotation durchzuführen, da man zuerst den Kameramittelpunkt in den Koordinatenursprung schieben muss, um dann um diesen Punkt herum zu drehen. 3 Alles in allem haben wir jetzt eine Kamera, die wir frei positionieren und drehen können. 3 Für OpenGL heißt das: gltranslate muss nach glmultmatrix kommen.

3 Weitergehende Infos und Copyleft Folgende Quellen liefern weitergehende Erklärungen: http://de.wikipedia.org/wiki/drehmatrix http://de.wikipedia.org/wiki/basiswechsel_(vektorraum) http://en.wikipedia.org/wiki/quaternion_rotation http://www.calc3d.com/help/gquaternion.html Eine ausprogrammierte Demo in C++ (OpenGL, Linux) findet sich hier: http://github.com/vain/spacesim http://www.uninformativ.de http://www.aoi-board.de Dieses Dokument steht unter der Creative Commons Attribution-Noncommercial-Share Alike 3. Germany License, http://creativecommons.org/licenses/by-nc-sa/3./de/. http://creativecommons.org/ P. Hofmann, 2. Juni 29