Koordinatensysteme und Transformationen P1P1 P1P1

Preview:

Citation preview

Koordinatensysteme und Transformationen

P1 P1

B. Preim AG Visualisierung Koordinatensysteme 2

Inhalt

• Koordinatensysteme– Beschreibung von Positionen (Punkten) in 2D und 3D– Mathematische Basis für computergraphische

Algorithmen

• Transformationen– Mathematische Beschreibung geometrischer

Veränderungen von Objekten– Einfache arithmetische Operationen– Repräsentation durch Matrizen– 2D und 3D

• Projektionen– Übergang von nD nach (n-1)D – hier 3D nach 2D– Grundlage für Kameramodelle in der Computergraphik

B. Preim AG Visualisierung Koordinatensysteme 3

Einführung

Motivation: Koordinatensysteme und Transforma-tionen für die Abbildung von 3D-Modellen entsprechend einer Kameraposition

Beispiele:– Weltkoordinaten → Kamerakoordinaten (3D-Modelle und

Kamera in einheitliches Koordinatensystem überführen)– Projektion auf die Bildebene (Kamerakoordinaten →

Bildkoordinaten)

• Grundlagen: Geometrie und lineare Algebra• Ausgangspunkt: Beschreibung von Objekten

durch Mengen von Eckpunkten und Kanten (Polygone bzw. Polyeder)

B. Preim AG Visualisierung Koordinatensysteme 4

Einführung

Skalare, Punkte und „Vektoren“• Jeder Vektor (a,b,c) kann eindeutig in eine

Linearkombination der Elemente der Basis des Vektorraumes zerlegt werden:– (a,b,c) = a(1,0,0) + b(0,1,0) + c(0,0,1)– Skalare a, b und c sind die kartesischen Koordinaten

des Vektors im System der Einheitsvektoren des euklidischen Koordinatensystems.

– Die kartesischen Koordinaten eines Vektors sind die Projektionen dieses Vektors auf die Koordinatenachsen.

• Skalare sind reelle/komplexe Zahlen. Bei Transforma-tionen repräsentieren sie z.B. Drehwinkel und Skalie-rungsfaktoren.

B. Preim AG Visualisierung Koordinatensysteme 5

Skalare, Vektoren und Matrizen• Skalare – 0-dimensional• Vektoren – 1-dimensional, n Komponenten• Matrizen – 2-dimensional, nxm Elemente

Zusammenhang:• Komponenten eines Vektors bzw. Elemente

einer Matrix sind Skalare.• Zeilen bzw. Spalten einer Matrix sind Vektoren.

Warum Matrizen?Beschreibung von Transformationen (Trafo-Matrizen)

Einführung

B. Preim AG Visualisierung Koordinatensysteme 6

Implementierung:Graphikbibliotheken enthalten oft vordefinierte Strukturen bzw. Klassen für Punkte, Vektoren und Matrizen.

Diese enthalten Methoden zum „Rechnen“ mit Vektoren.Beispiele: • Überladen von Operatoren zur Addition, Subtraktion• Bestimmung von Kreuz- und Skalarprodukt• Bestimmung der Größe eines Vektors

OpenGL:typedef GLfloat point3[3];

point3 vertices [8] = {{-1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, …};

Einführung

B. Preim AG Visualisierung Koordinatensysteme 7

• Vektorraum: enthält Vektoren und Skalare. In einem Vektorraum sind Operationen definiert, die Vektoren v und Skalare s verknüpfen.Multiplikation: f(v x s) → vAddition: f(v1,v2) → v

• Affiner Raum ist ein Vektorraum, der um Punkte p erweitert wird. Punkte können subtrahiert werden.Subtraktion: f (p1, p2) → v

• Euklidischer Raum ist ein affiner Raum, in dem skalare Werte quantifiziert werden, wobei das euklidische Abstandsmaß benutzt wird. In der CG nutzen wir vorrangig euklidische Räume.

Einführung

B. Preim AG Visualisierung Koordinatensysteme 8

Identische Vektoren Addition von Vektoren

Einführung

B. Preim AG Visualisierung Koordinatensysteme 9

x

y

z

(a,b,c)

a(1,0,0)

b(0,1,0)

c(0,0,1)

Interpretation: • Ein Vektor hat keine Position.• Ausgehend von einem festen

Punkt (z.B. o) definiert ein Vektor einen Punkt.

• Vektor (a,b,c) kann als Punkt im Raum dargestellt werden, der dem Endpunkt eines Vektors (a, b, c) ausgehend vom Koordinatenursprung (0,0,0) entspricht.

• Äquivalentes gilt für andersdimensionale Vektorräume n

Koordinatensysteme

B. Preim AG Visualisierung Koordinatensysteme 10

Koordinatensysteme• Eine Menge (o, e1, e2, ..., en) bestehend aus

einem Punkt o An und der Basis (e1, e2, ...,en) von An heißt Koordinatensystem.

• Für jeden Punkt p An ist Ortsvektor von p

• Komponenten von v heißen Koordinaten bezüglich (e1, e2, ..., en) d.h. p besitzt die Koordinaten (x1, x2, ..., xn):

• Punkt o heißt Koordinatenursprung

opv

nn2211 e x e x e x v op

B. Preim AG Visualisierung Koordinatensysteme 11

Koordinatensysteme in der CG

• zweidimensional

• dreidimensional

x

y

x

y

z

x

y

z

linkshändigesKoordinatensystem

rechtshändigesKoordinatensystem

X- Richtung des DaumensY- ZeigefingerZ- MittelfingerDie beiden Koordinaten-systeme sind spiegelbildlich und nicht durch Drehung ineinander zu überführen.

Koordinatensysteme und Transformationen

2. Transformationen in 2D

B. Preim AG Visualisierung Koordinatensysteme 13

• Fragestellung:– Wie werden Bewegungen beschrieben? Wie

berechnet man die Position von Objekten nach Bewegungen?

• Bewegungen = Transformationen– Veränderung der Position von Punkten– Verschiebung = Translation– Größenveränderungen = Skalierung– Drehung = Rotation– Weitere affine Transformationen:

• Spiegelung• Scherung

Transformationen in 2D

B. Preim AG Visualisierung Koordinatensysteme 14

Transformationen in 2D: Translation

• Punkt (x,y) wird auf gerade Linie nach (x‘, y‘) verschoben.

• Beschreibung der Translation durch einen Vektor (dx,dy), der die Verschiebungsweite in x- und y-Richtung angibt

• Addition des Verschiebungs-vektors

• Noch eine Interpretation von Vektoren: Beschreiben den Weg bzw. die Linie von P1 zu P2

(x,y)

(x‘,y‘)

(dx,

dy)

dx

dy

dy

dx

y

x

y

x

B. Preim AG Visualisierung Koordinatensysteme 15

Transformationen in 2D: Skalierung

Uniforme Skalierung• Zentrum der Skalierung

ist o, Skalierung erfolgt in alle Richtungen uniform mit dem skalaren Faktor

• Ortsvektor zu (x,y) wird auf das -fache verlängert, um (x‘,y‘) zu erhalten

• Multiplikation mit dem Skalierungsfaktor

y

x

y

x

y

x

(x,y)

(x‘,y‘)

B. Preim AG Visualisierung Koordinatensysteme 16

Nicht-uniforme Skalierung• Zentrum der Skalierung ist

o, Skalierung erfolgt in x-Richtung mit dem Faktor in y-Richtung mit (Skalierungsvektor ()T)

• Ortsvektor zu (x,y) wird auf das -fache in x-Richtung und das -fache in y-Richtung verlängert.

• Multiplikation mit entsprechenden Skalierungsfaktoren

ßy

x

y

x

(x,y)

(x‘,y‘)

Transformationen in 2D: Skalierung

B. Preim AG Visualisierung Koordinatensysteme 17

Transformationen in 2D: Rotation

• Rotationszentrum ist o.• Punkt (x,y) wird um den

Winkel um o gedreht, so dass sich der Punkt (x‘,y‘) ergibt.

• Positive Werte von ergeben eine Drehung entgegen dem Uhrzeigersinn.

(x,y)

(x‘,y‘)

B. Preim AG Visualisierung Koordinatensysteme 18

• Herleitung der Berechnungsvorschrift:Entfernung r vom Ursprung zu (x,y) bzw. (x‘,y‘) bleibt unverändert. Nutzung von Additionstheoremen für Winkelfunktionen.

(x,y)

(x‘,y‘)

r

r

r cosr cos( +

sincos ryrx

cossinsincos

)sin(

sinsincoscos

)cos(

rr

ry

rr

rx

(I) In (III) und (II) in (IV) einsetzen:

cossin

sincos

yxy

yxx

(I)

(III)

(IV)

(II)

Transformationen in 2D: Rotation

x

y

B. Preim AG Visualisierung Koordinatensysteme 19

• Berechnungsvorschrift

• Kann als Matrix-Vektormultiplikation ausgedrückt werden:

• Rotationen um negative Winkel erfolgen mit dem Uhrzeigersinn; ausnutzen: cos(-)=cos() und sin(-)=-sin()

cossin

sincos

yxy

yxx

y

x

y

x

cossin

sincos

Transformationen in 2D: Rotation

B. Preim AG Visualisierung Koordinatensysteme 20

Transformationen in 2D: Zwischenergebnis• Translation:Addition des Verschiebungsvektors• Skalierung: Multiplikation des Skalierungsfaktors• Rotation: Matrixmultiplikation• Keine einheitliche Behandlung!• Schwierig bei zusammengesetzten

Transformationen!

• Einheitliche Repräsentation von Transformationen gesucht → Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 21

Transformationen in 2D: Homogene Koordinaten• Ein Koordinatensystem wird in ein homogenes

Koordinatensystem überführt, indem eine zusätzliche Dimension eingeführt wird: n n+1 Dimensionen.

• Ein Punkt (x, y) wird in homogenen Koordinaten durch das Tripel (x·w, y·w, w) repräsentiert, mit w0.

• Normalisierte Darstellung: w = 1 (x, y, 1)

• Jeder Punkt hat unendlich viele äquivalente Repräsentationen in homogenen Koordinaten.

• Achtung: Homogene Koordinaten von 2D-Punkten nicht mit „normalen“ 3D-Koordinaten verwechseln!

B. Preim AG Visualisierung Koordinatensysteme 22

Vorteile:• Repräsentation aller Punkte in homogenen Koordinaten

ermöglicht einheitliche Behandlung der Transformationen

• Fragen:– Was steht für das Fragezeichen?– Welche Operation ist *?

• Antwort:– Transformationen werden als Matrizen repräsentiert– Verknüpfung durch Multiplikation

1

y

x

w

yw

xw

?

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 23

• Translation– Vorher: Addition eines Vektors– Jetzt: Multiplikation mit einer Translationsmatrix

• Skalierung– Vorher: komponentenweise Multiplikation mit

Skalierungsfaktoren– Jetzt: Multiplikation mit einer Skalierungsmatrix

1100

10

01

1100

10

01

y

x

dy

dx

y

x

dy

dx

1100

00

00

1100

00

00

y

x

sy

sx

y

x

sy

sx

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 24

• Rotation– Vorher: komplexe Gleichung oder

Matrixmultiplikation– Jetzt: Multiplikation mit einer Rotationsmatrix

• Allgemeine 2D-Transformationsmatrix

1100

0cossin

0sincos

1100

0cossin

0sincos

y

x

y

x

100

fed

cba Skalierung

Rotation

Translation

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 25

Inverse Transformationen:• Frage: Wie macht man Transformationen

rückgängig (was sind die inversen Transformationen)?

• Für elementare Transformationen einfach:– Translation: Verschiebung um den negativen

Verschiebungsvektor T-1(dx, dy) = T(-dx, -dy)

– Skalierung: Skalierung mit dem reziproken Skalierungsfaktor S-1() = S(1/)

– Rotation: Rotation um den negativen Rotationswinkel. Da aber Rotationsmatrizen orthogonal sind, gilt R-1 = RT.

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 26

Zusammengesetzte Transformationen• Nacheinanderausführung zweier Translationen

– Translation ist additiv, d.h. Ergebnis ist eine Verschiebung um die Summe beider Vektoren

• Nacheinanderausführung zweier Skalierungen

– Skalierung ist multiplikativ, d.h. Ergebnis ist eine Skalierung um das Produkt der beiden Faktoren.

1100

10

01

100

10

01

11

1

2

2

y

x

dy

dx

dy

dx

y

x

1100

10

01

121

21

y

x

dxdy

dxdx

y

x

1100

00

00

100

00

00

11

1

2

2

y

x

sy

sx

sy

sx

y

x

1100

00

00

121

21

y

x

sysy

sxsx

y

x

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 27

• Nacheinanderausführung zweier Rotationen

– Rotation ist additiv.

• Allgemein: Homogene Koordinaten – Ermöglichen Vereinheitlichung und Kombination aller

geometrischen Transformationen

• Schreibweise– Transformationen werden in der Reihenfolge T1,

T2, ..., Tn ausgeführt P‘=Tn·...·T2·T1·P

1100

0cossin

0sincos

100

0cossin

0sincos

111

11

22

22

y

x

y

x

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 28

Zusammensetzen von Transformationen• Rotation eines Punktes um einen beliebigen

Punkt P1 in der Ebene

• Ausführung in drei Schritten1. Translation, so dass P1 im Ursprung liegt

2. Rotation um den Ursprung3. Rück-Translation von P1

P1 P1

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 29

Zusammensetzen von Transformationen• Zerlegung von komplizierten Transformationen

in elementare Transformationen• Repräsentation der Gesamt-Transformation

durch eine Matrix möglich

1100

sin)cos1(cossin

sin)cos1(sincos

1100

10

01

100

0cossin

0sincos

100

10

01

),()(),(

11

11

1

1

1

1

1111

y

x

xy

yx

y

x

y

x

y

x

PyxTRyxTP

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 30

Zusammensetzen von Transformationen:• Aber: Matrixmultiplikation ist i.a. nicht kommutativ!• Das bedeutet: Reihenfolge der Transformationen ist

ausschlaggebend für das Ergebnis

• also: Tn...T2T1P T1T2...TnP T2Tn...T1P wenn die Ti voneinander verschiedene Transformationen sind

• Allerdings in einigen Fällen besteht Kommutativität:– Nacheinanderausführung von Translationen– Nacheinanderausführung von Skalierungen– Nacheinanderausführung von Rotationen

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 31

Weitere Transformationen:• Spiegelung

– an der x-Achse – an der y-Achse – wird implementiert als

Skalierung mit dem Faktor -1

100

0)1(0

00)1(

T

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 32

Weitere Transformationen:• Scherung

– Versatz parallel zur x-Achse, proportional zur y-Position (bzw. umgekehrt)

– in x-Richtung

– in y-Richtung

(x,y) (x‘,y‘)

100

010

01 a

T

100

01

001

bT

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 33

Affine Transformationen• Jede Sequenz von Rotation, Translation und

Skalierung erhält die Parallelität von Linien, aber nicht Längen und Winkel.

• Solche Transformationen heißen affine Transformationen.

Transformationen in 2D: Homogene Koordinaten

B. Preim AG Visualisierung Koordinatensysteme 34

Affine Abbildungen sind: – Geradentreu. Das Bild einer Geraden ist wieder eine Gerade.– Parallelentreu. Parallele Geraden haben parallele Bildgeraden.– Teilverhältnistreu. Dem Teilverhältnis auf einer Geraden

entspricht das Teilverhältnis auf der Bildgeraden. – Bsp: Wenn Punkt C Strecke AB im Verhältnis 1:2 teilt, dann liegt

C´auf A´B´und teilt A´B´im gleichen Verhältnis.

Affine Abbildungen sind:– nicht verhältnistreu in Bezug auf Teilflächen – Bsp: Wenn ein Punkt D das Dreieck ABC in drei gleich große

Dreieck ABD, ACD und BCD teilt, dann ist das Verhältnis der Flächen von A´B´D´zu A´C´D´zu B´C´D´im allgemeinen nicht 1:1:1.

– nicht längentreu– nicht winkeltreu– nicht flächentreu.

Transformationen in 2D: Homogene Koordinaten

A B

C

D

Koordinatensysteme und Transformationen

3. Transformationen in 3D

B. Preim AG Visualisierung Koordinatensysteme 36

3D Transformationen

• Vorgehensweise gleich zu 2D• Repräsentation in homogenen Koordinaten

(4D)

• Transformationsmatrizen demzufolge 44-Matrizen

1

z

y

x

z

y

x

B. Preim AG Visualisierung Koordinatensysteme 37

3D Transformationen: Matrizen

• Translation– Addition eines Translationsvektors bzw.

Multiplikation mit einer Translationsmatrix

• Skalierung– Multiplikation mit Skalierungsfaktoren bzw.

Multiplikation mit einer Skalierungsmatrix

1000

100

010

001

dz

dy

dx

T

1000

000

000

000

sz

sy

sx

S

uniforme Skalierung, wenn sx=sy=sz, sonst Nicht-uniforme Skalierung

B. Preim AG Visualisierung Koordinatensysteme 38

• Rotation– Rotationen um die verschiedenen Koordinatenachsen

müssen betrachtet werden.– 3 verschiedene Rotationsmatrizen (Rotation um

positive Winkel in rechtshändigem Koordinatensystem)

– Achse, um die gedreht wird, bleibt „Einheitsvektor“ in der Matrix

1000

0100

00cossin

00sincos

1000

0cos0sin

0010

0sin0cos

1000

0cossin0

0sincos0

0001

z

yx

R

RR

3D Transformationen: Matrizen

B. Preim AG Visualisierung Koordinatensysteme 39

3D Transformationen: Matrizen

Warum unterschiedliche Vorzeichen bei den Winkeln (Sinus)?

x

y

zrechtshändigesKoordinatensystem

x

z

Gegenüber der 2D-Herleitung, Spiegelung an der x-Achse (x, -y) (sin α = - sin (- α), cos (- α) = cos α

B. Preim AG Visualisierung Koordinatensysteme 40

• Überführung rechtshändiges in linkshändiges Koordinatensystem (Spiegelung)

1000

0100

0010

0001

lrT

3D Transformationen: Matrizen

B. Preim AG Visualisierung Koordinatensysteme 41

Zusammensetzen von Transformationen• auch über Multiplikation der Matrizen• generelle Transformationsmatrix in 3D

ponm

lkji

hgfe

dcba

T

Skalierung

Rotation

Translation

3D Transformationen: Matrizen

B. Preim AG Visualisierung Koordinatensysteme 42

Matrizen werden in der CG benötigt für Transformationen der Szene in Kamerakoordinaten und Projektionen.

Realisierung in OpenGL:In OpenGL wird die Spezifikation dieser Matrizen (4x4, homogene Koordinaten) unterstützt; alle Matrizen werden einheitlich gehandhabt.Der glMatrixMode spezifiziert, auf welche Matrix sich die folgenden Kommandos beziehen.glLoadIdentity () setzt Matrix auf die EinheitswerteglLoadMatrixf (matrixPointer) lädt die Matrix mit dem angege- benen Feld (1D, 16 Werte)glMultMatrixf (matrixPointer) multipliziert aktuelle Matrix mit der angegebenenglPushMatrix(), glPopMatrix() Matrix auf einem Stack ablegen bzw. vom Stack holen.

3D Transformationen: Matrizen

B. Preim AG Visualisierung Koordinatensysteme 43

3D Transformationen: Matrizen

Realisierung in OpenGL:glTranslatef (v1, v2, v3) multipliziert aktuelle Matrix mit einer

TranslationsmatrixglRotatef (ang, ref1, ref2, ref3) multipliziert aktuelle Matrix

mit einer Rotationsmatrix. Rotation um (ref1; ref2; ref3) und den Winkel „ang“.

Beispiel:glPushMatrix(); // aktuelle Matrix auf dem Stack sichernglMatrixMode (GL_MODEL_VIEW); // Welche Matrix?glLoadIdentity(); // InitialisierungglTranslatef (4.0, 5.0, 3.0); // TranslationglRotatef (45.0,1.0, 0.0, 0.0);// Rotation um x-AchseglTranslatef (-4.0, -5.0, -3.0); // RücktranslationglPopMatrix(); // Matrix rekonstruieren

Reihenfolge: Alle Manipulationen der Matrizen sind postmultiplikativ.

B. Preim AG Visualisierung Koordinatensysteme 44

Koordinatentransformationen

• Bisher: Transformation von Punkten in neue Punkte bei konstantem Koordinatensystem („geometrische Transformationen“)

• Äquivalente Sichtweise: Wechsel des Koordinatensystems bei konstantem geometrischen Objekten („Koordinatentransfor-mationen“)

• Allgemein gilt:– Geometrische Transformationen und entsprechende

Koordinatentransformationen sind invers zueinander!

• Computergraphik:– Geometrische Objekte oft in lokalem „bequemem“

Koordinatensystem definiert („Objekt-Koordinatensystem“)

– Koordinatentransformation in Weltkoordinaten gibt Lage des Objekts in der Szene wider.

B. Preim AG Visualisierung Koordinatensysteme 45

Zusammenfassung Transformationen• Geometrische Transformationen sind lineare

Abbildungen vom n in den n

– für uns von besonderem Interesse 2 2 und 3 3

• Für Computergraphik relevant:– Translation– Skalierung– Rotation– Scherung, Spiegelung

• Einheitliche Behandlung der Transformationen durch Übergang zu homogenen Koordinaten und zur Darstellung der Transformationen durch Matrizen

B. Preim AG Visualisierung Koordinatensysteme 46

• Zusammengesetzte Transformationen durch Hintereinanderausführen von elementaren Transformationen, entspricht Multiplikation der Matrizen.

• Transformation der Objekte oder des Koordinaten-systems

Zusammenfassung Transformationen

Recommended