Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes...

26
C A R L V ON O SS I ET Z KY Transformationen Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011

Transcript of Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes...

Page 1: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 2: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 3: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 4: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 5: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 6: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 7: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 8: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 9: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 10: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 11: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 12: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 13: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 14: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 15: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 16: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 17: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 18: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

Lineare Transformationen

Visualisieren einer Transformationsmatrix (Forts.)Darstellung der Basisvektoren einer Transformation

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 18/26

Page 19: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 20: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 21: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 22: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 23: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 24: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 25: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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

Page 26: Transformationen - informatik.uni-oldenburg.detrigger/content/opengl/opengl... · 2 + za 3 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26. Lineare Transformationen Wie transformiert

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