Post on 05-Feb-2018
C A R LV O N
O S S I E T Z K Y
Transformationen
Johannes Diemke
Ubung im Modul OpenGL mit JavaWintersemester 2010/2011
Motivation
TransformationenSind Grundlage vieler Verfahren der Computergrafik
I Model- und View-TransformationI Projektionstransformation
Einsatz in vielen weiteren Verfahren
I Bump MappingI Shadow MappingI BillboardingI . . .
Mathematische Grundlage sind lineare und affine Abbildungenmittels Matrizen
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 2/26
Grundlagen
Matrix
Rechteckige Anordnung von Elementen
Schlusselkonzept der linearen Algebra
In der Computergrafik von elementarer Bedeutung:
I Lineare und affine AbbildungenI Beschreiben Transformationen zwischen Koordinatensystemen
Notation
Aneinanderreihung der Elemente in Zeilen und Spalten
Durch fettgedruckte Großbuchstaben bezeichnet
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/26
Grundlagen
Transponieren einer Matrix
Die transponierte Matrix AT einer r×c-Matrix A ergibt sich durchVertauschen der Zeilen mit den Spalten
Das Ergebnis ist eine c×r-Matrix
Transponieren als Involution
(MT )T = M
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/26
Grundlagen
Multiplikation mit einem Skalar
Eine m×n-Matrix M kann mit einem Skalar k multipliziert werden
Ergebnis ist wieder eine m×n-Matrix kM
Jedes Element wird mit k multipliziert
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 5/26
Grundlagen
Matrixmultiplikation
Eine r×n-Matrix A kann mit einer n×c-Matrix B multipliziert werden
Das Ergebnis ist eine r×c-Matrix
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 6/26
Grundlagen
Matrixmultiplikation (Forts.)Die Elemente cij der r×c-Matrix C = AB ergeben sich zu
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/26
Grundlagen
Rechenregeln fur Matrizen
Nicht kommutativ
AB 6= BA
Assoziativ
(AB)C = A(BC )
Inverse eines Produktes
(AB)−1 = B−1A−1
Transponieren eines Produkts
(AB)T = BTAT
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/26
Grundlagen
Die Einheitsmatrix
Spezielle Diagonalmatrix
Hat nur Einsen auf der Diagonalen
Neutrales Element bzgl. Multiplikation
IA = AI = A
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 9/26
Grundlagen
Vektoren als MatrizenVektoren der Dimension n konnen als Matrizen aufgefasst werden
I 1×n-Matrix (Zeilenvektor)I n×1-Matrix (Spaltenvektor)
Aus geometrischer Sicht sind beide Notationen identisch
Unterscheidung bei Matrixmultiplikation aber wichtig
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/26
Grundlagen
Vektor-Matrix-Multiplikation
Moglich, da Vektoren als Matrizen aufgefasst werden konnen
Es gelten die gleichen Regeln
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 11/26
Lineare Transformationen
Geometrische InterpretationEine quadratische Matrix kann jede lineare Transformationbeschreiben
I Gerade und parallele Geraden bleiben erhaltenI Der Urspung bewegt sich nichtI Langen, Winkel, Flachen und Volumen konnen sich aber andern
Lineare Transformationen
I RotationI SkalierungI ReflexionI ScherungI Orthographische Projektion
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 12/26
Lineare Transformationen
Wie transformiert eine Matrix einen Vektor?
Ein Vektor kann als Linearkombination von Basisvektoren aufgefasstwerden
Bezeichnen wir die Basisvektoren mit e1, e2 und e3 erhalten wir
v = xe1 + ye2 + ze3
Der Vektor v kann durch einen Basiswechsel auf v ′ abgebildetwerden
v ′ = xa1 + ya2 + za3
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26
Lineare Transformationen
Wie transformiert eine Matrix einen Vektor? (Forts.)v ′ hat im neuen System immer noch dieselben Komponenten wie v
Bzgl. des [e1, e2, e3]-Systems haben sie sich aber geandert
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 14/26
Lineare Transformationen
Wie transformiert eine Matrix einen Vektor? (Forts.)
Die Komponente des Vektors v ′ im [e1, e2, e3]-Systems ergeben sichzu
v ′ = xa1 + ya2 + za3
Das laßt sich aber pragnanter durch eine Matrixmultiplikationausdrucken
v ′ =
a1x a2x a3x
a1y a2y a3y
a1z a2z a3z
xyz
= Av
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 15/26
Lineare Transformationen
Zusammenfassung
Die Spalten einer Matrix konnen als Basisvektoren aufgefasst werden
Multiplikation mit einer Matrix M
I Fuhrt zu BasiswechselI Transformation von einem Koordinatensystem in ein anderesI Gibt an wie v nach Basiswechsel im alten Koordinatensystem aussieht
Konkatenation von Transformationen durch Matrixmultiplikation
v ′ = (A4(A3(A2(A1v)))) = (A4A3A2A1)v
Lineare Transformationen ermoglichen keine Translation
v ′ = A0 = 0
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 16/26
Lineare Transformationen
Visualisieren einer Transformationsmatrix
Jede Spalte der Matrix stellt einen Basisvektor nach derTransformation dar
a1 = Ae1
a2 = Ae2
a3 = Ae3
a1, a2 und a3 stellen die Achsen nach der Transformation dar
Aus dieser Einsicht folgt
I Konstruktion einer Matrix fur gegebene Transformation ist einfachI Wie wirkt sich die Transformation auf die Basisvektoren aus?I Transformierte Basisvektoren bilden dann die Matrix
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 17/26
Lineare Transformationen
Visualisieren einer Transformationsmatrix (Forts.)Darstellung der Basisvektoren einer Transformation
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 18/26
Lineare Transformationen
Skalierung
Die Skalierung ist eine lineare Abbildung
Vegroßert oder verkleinert Vektoren
S(kx , ky , kz) =
kx 0 00 ky 00 0 kz
Inverse
S−1(kx , ky , kz) = S(1/kx , 1/ky , 1/kz)
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 19/26
Lineare Transformationen
Rotation
Die Rotation ist eine lineare Abbildung
Rotiert Vektoren
Rz(θ) =
cos θ − sin θ 0sin θ cos θ 0
0 0 1
Rotations-Matrizen sind orthogonal
AAT = I
A−1 = AT
Inverse
R−1z (θ) = Rz(−θ) = RTz (θ)
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 20/26
Lineare Transformationen
Rotation (Forts.)
Rotation um die x-Achse
Rx(θ) =
1 0 00 cos θ − sin θ0 sin θ cos θ
Rotation umd die y-Achse
Ry (θ) =
cos θ 0 sin θ0 1 0
− sin θ 0 cos θ
Inverse
R−1x (θ) = Rx(−θ) = RTx (θ)
R−1y (θ) = Ry (−θ) = RTy (θ)
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 21/26
Affine Transformationen
Affine TransformationenSind ein wichtiges Hilfsmittel in der Computergrafik
I Ermoglichen Orientierung und BewegungI Lineare Abbildung plus Translation
x ′ = Ax + p
Problem
Transformationen nicht mehr uber reine Matrixmultiplikationmoglich
Konkatenation auch nicht
Losung: Homogene Koordinaten
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 22/26
Affine Transformationen
Homogene Koordinaten
Eine affine Abbildung x ′ = Ax + p kann in eine Matrixmultiplikationuberfuhrt werden
x ′ = Mx
Dazu ist M folgendermaßen zu wahlen
M =
a1,1 a1,2 a1,3 p1a2,1 a2,2 a2,3 p2a3,1 a3,2 a3,3 p3
0 0 0 1
x ist dann in homogene Koordinaten x zu uberfuhren
(x1, x2, x3)→ (x1, x2, x3, 1)
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 23/26
Affine Transformationen
Homogene Koordinaten (Forts.)M kann uber eine Matrixdekomposition zerlegt werden
I Linearer Anteil RI Affiner Anteil T
M = TR =
1 0 0 p10 1 0 p20 0 1 p30 0 0 1
a1,1 a1,2 a1,3 0a2,1 a2,2 a2,3 0a3,1 a3,2 a3,3 0
0 0 0 1
Vorteile homogener Koordinaten
Einheitliche Behandlung aller Transformationen
Konkatenation von Transformationen durch Matrixmultiplikation
Komplexe Transformationen durch Gesamttransformationsmatrix
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 24/26
Literatur
� Dave ShreinerOpenGL Programming Guidehttp://www.opengl-redbook.com/
� Richard S. Wright, Benjamin Lipchak und Nicholas HaemelOpenGL SuperBibelhttp://www.starstonesoftware.com/OpenGL/
� Randi J. RostOpenGL Shading Languagehttp://www.3dshaders.com/
� Tomas Akenine-Moller, Eric Haines und Naty HoffmanReal-Time Renderinghttp://www.realtimerendering.com/
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 25/26
Literatur
� Edward AngelInteractive Computer Graphicshttp://www.cs.unm.edu/˜angel/
� Gerald Farin und Dianne HansfordPractical Linear Algebrahttp://www.farinhansford.com/books/pla/
� Fletcher Dunn und Ian Parberry3D Math Primer for Graphics and Game Developmentwww.gamemath.com/
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 26/26