38
Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Embed Size (px)

Citation preview

Page 1: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Grundlagen der Geometrie

Softwaretechnologie II20.11.2008

Michel Arleth

Page 2: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Einführung

Der Bildschirm bildet alle Grafiken zweidimensional ab. Das ist völlig ausreichend für Spiele wie Tetris, dreidimensionale Spiele müssen anders behandelt werden.

Dreidimensionale Objekte werden im Rechner in drei Dimensionen berechnet und vor der Ausgabe auf den Bildschirm projiziert.

Page 3: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Punkte, Koordinaten und Vektoren

Grundlage ist das kartesische Koordinatensystem. Kleinster Baustein ist der Punkt.

Wir benutzen zwei Arten, um Punkte im Koordinatensystem darzustellen: Punkte und Vektoren

Page 4: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Punkte, Koordinaten und Vektoren

a = xa∣ ya

a = xaya

Darstellung eines Punktes:

Darstellung eines Vektors:

Page 5: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Grundrechenarten und Vektoren

Länge berechnen:

Addition:

Skalarprodukt:

∥l a∥= x a2 y a

2

a b =xaxbya yba∗c= c∗xac∗ya

Page 6: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Grundrechenarten und Vektoren

Multiplikation:

Einheitsvektoren:

a∗b =xa∗xbya∗ybe x = 1

0 e y = 01

Page 7: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Vektordarstellung als Vielfaches des Einheitsvektoren

Beispiel: a= 25 = 2∗ex5∗e y

=2∗10 0

5∗0=20

05=25= a

Page 8: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Polarkoordinatendarstellung

Page 9: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Polarkoordinatendarstellung

Darstellung eines Punktes durch Länge / Entfernung vom Ursprung (Radiant / r) und den Winkel α zur x-Achse / Azimut)

Umrechnung eines Punktes in Polarkoordinaten ausgehend von kartesischen Koordinaten wegen Fallunterscheidung komplex.

In C++ übernimmt die Funktion atan2 die Umrechnung.

Page 10: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Fallunterscheidungen:

Page 11: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Skalarprodukt

Nötig zur Projektion eines Vektoren auf einen anderen.

immer ein Absolutwert.

Ist bei 90 Grad null.

Page 12: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Skalarprodukt und Projektion

Skalarprodukt von Vektor a und b:

Projektion von Vektor a auf Vektor b:

⟨a , b⟩=∥a∥∗∥b∥∗cosα− β

p =⟨a , b ⟩∥b2∥

∗b

Page 13: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Zerlegen von Vektoren

Zerlegung von M in x und y:

⟨m , x ⟩∥x2∥

∗x = x

⟨m , y ⟩∥y 2∥

∗ y = y

Page 14: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

Bewegung eines grafischen Objektes besteht aus Drehung und Verschiebung.

Gedreht wird immer um den Ursprung, ggf. wird das Objekt zur Berechnung verschoben.

Page 15: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

Verschiebung (Translation) von Punkt P um Punkt A:

x pneu = x pxay pneu = y p ya

Page 16: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

Drehung von Punkt P um Winkel α entgegen dem Uhrzeigersinn::

x pneu= cosα ∗x p−sin α∗y py pneu = sinα ∗x pcos α∗y p

Page 17: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

Skalierung von Punkt P um die Faktoren r und s:

x pneu = r∗x py pneu = s∗y p

Page 18: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

Skalieren mit unterschiedlichen Faktoren: r=2; s=1

Page 19: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung Beispiel: Verschiebung und Drehung eines

Punktes P(2|1). Angelpunkt A(4|6). P wird um 90 Grad gedreht, die Entfernung von P zu A wird verdoppelt.

1. Verschieben des Koordinatensystems:

p − a = 2− 41−6= −2

−5

Page 20: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

2. Drehen des Punktes um A'(0|0):

p = cos 90∗−2−sin 90∗−5sin90∗−2cos 90∗−5

=0∗−2−1∗−51∗−20∗−5= 5

−2sin 90o=1cos 90o=0

Page 21: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

3. Skalierung um den Faktor 2

p ∗ 2 = 5∗2−2 ∗2= 10

−4

Page 22: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

4. Rückverschieben des Koordinatensystems

p a = 104−4 6= 14

2

Page 23: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung Zusammenfassung der Transformation in

einem Term:

xneu = a∗ x b∗ y cyneu= d∗xe∗y

drehen u. skalieren

fverschieben

Page 24: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung

Berechnung der Transformation mit Hilfe einer Matrix:

x y 1∗a d 0b e 0c f 1=a∗xb∗yc/d∗xe∗y f /1

Page 25: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung Berechnung der Transformation mit Hilfe einer

Matrix: Verschiebung:

xneu=xuyneu= yv

wird geschrieben als :x y 1∗1 0 00 1 0u v 1

Page 26: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung Berechnung der Transformation mit Hilfe einer

Matrix: Drehung:

xneu=cosα∗x−sinα∗yyneu=sinα∗xcos α∗y

wird geschrieben als :

x y 1∗ cosα sinα 0−sinα cos α 0

0 0 1

Page 27: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung Berechnung der Transformation mit Hilfe einer

Matrix: Skalieren:

xneu=r∗xyneu=s∗y

wird geschrieben als : x y 1∗r 0 00 s 00 0 1

Page 28: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung Alle vier Matritzen (Verschieben in den

Ursprung, Drehung, Skalierung, Rückverschiebung) werden nacheinander multipliziert und so zusammengefasst:

1 0 00 1 0

−4 −6 1∗ 0 1 0−1 0 00 0 1∗2 0 0

0 2 00 0 1∗1 0 0

0 1 04 6 1

= 0 2 0−2 0 016 −2 1

Page 29: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Bewegung Alle vier Matritzen (Verschieben in den

Ursprung, Drehung, Skalierung, Rückverschiebung) werden nacheinander multipliziert und so zusammengefasst:

2 1 1∗ 0 2 0−2 0 016 −2 1= 14 2 1

14 = 2∗01∗−21∗162 = 2∗21∗01∗−2

1 = 2∗01∗01∗1

Page 30: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

„Schatten“ eines Objektes in einem um eine Dimension kleineren Raum

Page 31: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Orthogonale Projektion

Page 32: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Orthogonale Projektion:

a proj= a∗1 0 00 0 00 0 1

Page 33: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Orthogonale Projektion mit der Einschränkung eines Sichtfensters der Höhe c und der Breite d.

DefinitionSichtbarkeit des Objekts wenn nach der Projektion:

Notwendige Transformation von x:

−1 x 1

x =2d

∗ x

Page 34: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Rangfolge für y-Wert verschiedener Objekte bilden, dazu Transformation in Abhängigkeit des Abstandes a (Kamera zum Fenster) und b (Abstand Kamera zur Projektionsfläche). Ergebnisse liegen zwischen 0 = a und 1 = b.

y=1b−a

∗y−ab−a

Page 35: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Einfügen der Formeln in Matrix:

a proj= a∗2d

0 0

01b−a

0

0−ab−a

1

Page 36: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Perspektivische Projektion

Page 37: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Perspektivische Projektion

Page 38: Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Projektion

Matrix für perspektivische Projektion:

a proj= a∗2∗ad

0 0

0bb−a

1

0 − abb−a

0