Vorstellung des Roboterfußball-Teams TORF (Vortrag)
2010-JOGL-05-Transformationen
1. CARL
VON
OSSIETZKY
Transformationen
Johannes Diemke
¨
Ubung im Modul OpenGL mit Java
Wintersemester 2010/2011
2. Motivation
Transformationen
Sind Grundlage vieler Verfahren der Computergrafik
Model- und View-Transformation
Projektionstransformation
Einsatz in vielen weiteren Verfahren
Bump Mapping
Shadow Mapping
Billboarding
...
Mathematische Grundlage sind lineare und affine Abbildungen
mittels Matrizen
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 2/26
3. Grundlagen
Matrix
Rechteckige Anordnung von Elementen
Schl¨sselkonzept der linearen Algebra
u
In der Computergrafik von elementarer Bedeutung:
Lineare und affine Abbildungen
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
4. Grundlagen
Transponieren einer Matrix
Die transponierte Matrix AT einer r×c-Matrix A ergibt sich durch
Vertauschen der Zeilen mit den Spalten
Das Ergebnis ist eine c×r-Matrix
Transponieren als Involution
(M T )T = M
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/26
5. 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
6. 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
8. Grundlagen
Rechenregeln f¨r Matrizen
u
Nicht kommutativ
AB = BA
Assoziativ
(AB)C = A(BC )
Inverse eines Produktes
(AB)−1 = B −1 A−1
Transponieren eines Produkts
(AB)T = B T AT
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/26
9. 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
10. Grundlagen
Vektoren als Matrizen
Vektoren der Dimension n k¨nnen als Matrizen aufgefasst werden
o
1×n-Matrix (Zeilenvektor)
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
11. Grundlagen
Vektor-Matrix-Multiplikation
M¨glich, da Vektoren als Matrizen aufgefasst werden k¨nnen
o o
Es gelten die gleichen Regeln
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 11/26
12. Lineare Transformationen
Geometrische Interpretation
Eine quadratische Matrix kann jede lineare Transformation
beschreiben
Gerade und parallele Geraden bleiben erhalten
Der Urspung bewegt sich nicht
L¨ngen, Winkel, Fl¨chen und Volumen k¨nnen sich aber ¨ndern
a a o a
Lineare Transformationen
Rotation
Skalierung
Reflexion
Scherung
Orthographische Projektion
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 12/26
13. Lineare Transformationen
Wie transformiert eine Matrix einen Vektor?
Ein Vektor kann als Linearkombination von Basisvektoren aufgefasst
werden
Bezeichnen wir die Basisvektoren mit e1 , e2 und e3 erhalten wir
v = xe1 + y e2 + ze3
Der Vektor v kann durch einen Basiswechsel auf v abgebildet
werden
v = xa1 + y a2 + za3
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26
14. 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 ge¨ndert
a
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 14/26
15. Lineare Transformationen
Wie transformiert eine Matrix einen Vektor? (Forts.)
Die Komponente des Vektors v im [e1 , e2 , e3 ]-Systems ergeben sich
zu
v = xa1 + y a2 + za3
Das l¨ßt sich aber pr¨gnanter durch eine Matrixmultiplikation
a a
ausdr¨cken
u
a1x a2x a3x x
v = a1y a2y a3y y = Av
a1z a2z a3z z
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 15/26
16. Lineare Transformationen
Zusammenfassung
Die Spalten einer Matrix k¨nnen als Basisvektoren aufgefasst werden
o
Multiplikation mit einer Matrix M
F¨hrt zu Basiswechsel
u
Transformation von einem Koordinatensystem in ein anderes
Gibt an wie v nach Basiswechsel im alten Koordinatensystem aussieht
Konkatenation von Transformationen durch Matrixmultiplikation
v = (A4 (A3 (A2 (A1 v )))) = (A4 A3 A2 A1 )v
Lineare Transformationen erm¨glichen keine Translation
o
v = A0 = 0
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 16/26
17. Lineare Transformationen
Visualisieren einer Transformationsmatrix
Jede Spalte der Matrix stellt einen Basisvektor nach der
Transformation dar
a1 = Ae1
a2 = Ae2
a3 = Ae3
a1 , a2 und a3 stellen die Achsen nach der Transformation dar
Aus dieser Einsicht folgt
Konstruktion einer Matrix f¨r gegebene Transformation ist einfach
u
Wie wirkt sich die Transformation auf die Basisvektoren aus?
Transformierte Basisvektoren bilden dann die Matrix
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 17/26
18. Lineare Transformationen
Visualisieren einer Transformationsmatrix (Forts.)
Darstellung der Basisvektoren einer Transformation
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 18/26
19. Lineare Transformationen
Skalierung
Die Skalierung ist eine lineare Abbildung
Vegr¨ßert oder verkleinert
o Vektoren
kx 0 0
S(kx , ky , kz ) = 0 ky 0
0 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
20. Lineare Transformationen
Rotation
Die Rotation ist eine lineare Abbildung
Rotiert Vektoren
cos θ − sin θ 0
Rz (θ) = sin θ cos θ 0
0 0 1
Rotations-Matrizen sind orthogonal
AAT = I
A−1 = AT
Inverse
−1 T
Rz (θ) = Rz (−θ) = Rz (θ)
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 20/26
21. Lineare Transformationen
Rotation (Forts.)
Rotation um die x-Achse
1 0 0
Rx (θ) = 0 cos θ − sin θ
0 sin θ cos θ
Rotation umd die y-Achse
cos θ 0 sin θ
Ry (θ) = 0 1 0
− sin θ 0 cos θ
Inverse
−1 T
Rx (θ) = Rx (−θ) = Rx (θ)
−1 T
Ry (θ) = Ry (−θ) = Ry (θ)
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 21/26
22. Affine Transformationen
Affine Transformationen
Sind ein wichtiges Hilfsmittel in der Computergrafik
Erm¨glichen Orientierung und Bewegung
o
Lineare Abbildung plus Translation
x = Ax + p
Problem
Transformationen nicht mehr uber reine Matrixmultiplikation
¨
m¨glich
o
Konkatenation auch nicht
L¨sung: Homogene Koordinaten
o
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 22/26
23. Affine Transformationen
Homogene Koordinaten
Eine affine Abbildung x = Ax + p kann in eine Matrixmultiplikation
uberf¨hrt werden
¨ u
x = Mx
Dazu ist M folgendermaßen zu w¨hlen
a
a1,1 a1,2 a1,3 p1
a a a p
M = 2,1 2,2 2,3 2
a3,1 a3,2 a3,3 p3
0 0 0 1
x ist dann in homogene Koordinaten x zu uberf¨hren
¨ u
(x1 , x2 , x3 ) → (x1 , x2 , x3 , 1)
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 23/26
24. Affine Transformationen
Homogene Koordinaten (Forts.)
M kann uber eine Matrixdekomposition zerlegt werden
¨
Linearer Anteil R
Affiner Anteil T
1 0 0 p1 a1,1 a1,2 a1,3 0
0 1 0 p2 a2,1 a2,2 a2,3 0
M = TR =
0
0 1 p3 a3,1 a3,2 a3,3 0
0 0 0 1 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
25. Literatur
Dave Shreiner
OpenGL Programming Guide
http://www.opengl-redbook.com/
Richard S. Wright, Benjamin Lipchak und Nicholas Haemel
OpenGL SuperBibel
http://www.starstonesoftware.com/OpenGL/
Randi J. Rost
OpenGL Shading Language
http://www.3dshaders.com/
Tomas Akenine-M¨ller, Eric Haines und Naty Hoffman
o
Real-Time Rendering
http://www.realtimerendering.com/
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 25/26
26. Literatur
Edward Angel
Interactive Computer Graphics
http://www.cs.unm.edu/˜angel/
Gerald Farin und Dianne Hansford
Practical Linear Algebra
http://www.farinhansford.com/books/pla/
Fletcher Dunn und Ian Parberry
3D Math Primer for Graphics and Game Development
www.gamemath.com/
Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 26/26