Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth.
-
Upload
winfried-schlotter -
Category
Documents
-
view
110 -
download
2
Transcript of Grundlagen der Geometrie Softwaretechnologie II 20.11.2008 Michel Arleth.
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