Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth

Preview:

Citation preview

Grundlagen der Geometrie

Softwaretechnologie II20.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.

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

Punkte, Koordinaten und Vektoren

a = xa∣ ya

a = xaya

Darstellung eines Punktes:

Darstellung eines Vektors:

Grundrechenarten und Vektoren

Länge berechnen:

Addition:

Skalarprodukt:

∥l a∥= x a2 y a

2

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

Grundrechenarten und Vektoren

Multiplikation:

Einheitsvektoren:

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

0 e y = 01

Vektordarstellung als Vielfaches des Einheitsvektoren

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

=2∗10 0

5∗0=20

05=25= a

Polarkoordinatendarstellung

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.

Fallunterscheidungen:

Skalarprodukt

Nötig zur Projektion eines Vektoren auf einen anderen.

immer ein Absolutwert.

Ist bei 90 Grad null.

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

Zerlegen von Vektoren

Zerlegung von M in x und y:

⟨m , x ⟩∥x2∥

∗x = x

⟨m , y ⟩∥y 2∥

∗ y = y

Bewegung

Bewegung eines grafischen Objektes besteht aus Drehung und Verschiebung.

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

Bewegung

Verschiebung (Translation) von Punkt P um Punkt A:

x pneu = x pxay pneu = y p ya

Bewegung

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

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

Bewegung

Skalierung von Punkt P um die Faktoren r und s:

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

Bewegung

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

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

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

Bewegung

3. Skalierung um den Faktor 2

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

−4

Bewegung

4. Rückverschieben des Koordinatensystems

p a = 104−4 6= 14

2

Bewegung Zusammenfassung der Transformation in

einem Term:

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

drehen u. skalieren

fverschieben

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

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

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

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

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

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

Projektion

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

Projektion

Orthogonale Projektion

Projektion

Orthogonale Projektion:

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

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

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

Projektion

Einfügen der Formeln in Matrix:

a proj= a∗2d

0 0

01b−a

0

0−ab−a

1

Projektion

Perspektivische Projektion

Projektion

Perspektivische Projektion

Projektion

Matrix für perspektivische Projektion:

a proj= a∗2∗ad

0 0

0bb−a

1

0 − abb−a

0

Recommended