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

Post on 05-Feb-2018

227 views 2 download

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

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