SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
CARL
      VON
OSSIETZKY
            Transformationen

            Johannes Diemke

            ¨
            Ubung im Modul OpenGL mit Java
            Wintersemester 2010/2011
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
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
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
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 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
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 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
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
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
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
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
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
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
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
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
   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
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
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
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
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
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
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
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

Contenu connexe

Plus de Johannes Diemke

Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernJohannes Diemke
 
2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-ShadingJohannes Diemke
 
2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJJohannes Diemke
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-MappingJohannes Diemke
 
2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-KnotenJohannes Diemke
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05Johannes Diemke
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-EinfuehrungJohannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Johannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Johannes Diemke
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Johannes Diemke
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Johannes Diemke
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Johannes Diemke
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010Johannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Johannes Diemke
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumJohannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Johannes Diemke
 

Plus de Johannes Diemke (19)

Prozedurale Texturen
Prozedurale TexturenProzedurale Texturen
Prozedurale Texturen
 
Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen Potentialfeldern
 
2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading
 
2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping
 
2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung
 
Boost C++ Libraries
Boost C++ LibrariesBoost C++ Libraries
Boost C++ Libraries
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
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
  • 7. 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
  • 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