2010-JOGL-05-Transformationen
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

2010-JOGL-05-Transformationen

on

  • 358 views

 

Statistics

Views

Total Views
358
Views on SlideShare
358
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

2010-JOGL-05-Transformationen Presentation Transcript

  • 1. CARL VONOSSIETZKY Transformationen Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011
  • 2. MotivationTransformationen 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. GrundlagenMatrix Rechteckige Anordnung von Elementen Schl¨sselkonzept der linearen Algebra u In der Computergrafik von elementarer Bedeutung: Lineare und affine Abbildungen Beschreiben Transformationen zwischen KoordinatensystemenNotation Aneinanderreihung der Elemente in Zeilen und Spalten Durch fettgedruckte Großbuchstaben bezeichnet Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/26
  • 4. GrundlagenTransponieren 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. GrundlagenMultiplikation 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. GrundlagenMatrixmultiplikation 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
  • 7. GrundlagenMatrixmultiplikation (Forts.) Die Elemente cij der r×c-Matrix C = AB ergeben sich zu Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/26
  • 8. GrundlagenRechenregeln 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. GrundlagenDie 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. GrundlagenVektoren 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. GrundlagenVektor-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 TransformationenGeometrische 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 TransformationenWie 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 TransformationenWie 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 TransformationenWie 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 TransformationenZusammenfassung 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 TransformationenVisualisieren 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 TransformationenVisualisieren einer Transformationsmatrix (Forts.) Darstellung der Basisvektoren einer Transformation Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 18/26
  • 19. Lineare TransformationenSkalierung 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 TransformationenRotation 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 TransformationenRotation (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 TransformationenAffine Transformationen Sind ein wichtiges Hilfsmittel in der Computergrafik Erm¨glichen Orientierung und Bewegung o Lineare Abbildung plus Translation x = Ax + pProblem 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 TransformationenHomogene 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 TransformationenHomogene 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 1Vorteile 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