70
Vorlesung Computergrafik/Visualisierung II Hochschule für Technik und Wirtschaft Dresden University of Applied Sciences Prof. Dr. Marco Block-Berlitz Sommersemester 2014 Studiengang Medieninformatik

computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Embed Size (px)

Citation preview

Page 1: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Vorlesung

Computergrafik/Visualisierung II

Hochschule für Technik und Wirtschaft DresdenUniversity of Applied Sciences

Prof. Dr. Marco Block-BerlitzSommersemester 2014

Studiengang Medieninformatik

Page 2: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Vorlesung Computergrafik II

Prof. Dr. Marco Block-Berlitz

Vorlesungsteil

Physikalische Spielereien

Wer die Geometrie begreift, vermag in dieser Welt alles zu verstehen.Galileo Galilei

.+ .

.+

reelle Achse

imaginäre Achse

1

Page 3: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 3

Ohne Lineare Algebra geht es nicht.

Page 4: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 4

Hinweise zum Selbststudium

Die Lineare Algebra ist eines des wichtigsten, mathematischen Handwerkzeuge der Computer-grafik. Für das Studium der Grundlagen empfehle ich das hervorragende Buch von GilbertStrang:

Strang G.: „Introduction to Linear Algebra“, 4.Auflage, Wellesley-Cambridge Press, 2009

Wer dabei Lust hat, sich mal in eineVorlesung von Prof. Strang (MIT)zu setzen, hat hier die Möglichkeitdazu:

http://www.academicearth.org/courses/linear-algebra/

Page 5: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5

Schauen wir uns noch einmal die Trigonometrie (trigon, griechisch für Dreieck) etwas genauer an.

Daraus resultierende trigonometrische Funktionen:

Um sich diese drei Regeln zu merken, erinnern wir uns immer an den trigonometrischen Gott der Winkel „SohCahToa“...

Trigonometrie und Vektoren

Ankathete

Gegenkath

ete

.b

a

immer rechter Winkel!

opposite adjazent hypotenuse

Isch großa

Sohcahtoa!

c

Page 6: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 6

Winkel können in rad (Radiant, radians) oder ° (Grad, degree) angegeben werden.

Radiant Grad

Die jeweiligen Umrechnungen sind sehr einfach:

Winkelangaben und -umrechnungen

90°

180°

270°

Page 7: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 7

u=(cos ,sin )

Ein Einheitsvektor u ist ein Vektor mit der Länge Eins. Es gilt u∙u=1. Um einen Vektor in einen Einheitsvektor zu transformieren, teilen wir ihn einfach durch seine Länge:

Für =0 wird der Vektor u gerade zu i. Für jeden Winkel ergeben dieKomponenten cos und sin gerade u u=1, weil cos + sin =1.

Einheitsvektoren und Einheitskreis

1

1

j=(0,1)

i=(1,0)cos

sin

Einheitskreis

1

-i=(-1,0)

-j=(0,-1)

2 2

Page 8: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 8

Um einen Vektor v (der ungleich dem Nullvektor ist) zu normieren, also in einen Einheits-vektor der Länge Eins zu transformieren, teilen wir ihn einfach durch seine Länge.

Dann ist u= ein Einheitsvektor in dieselbe Richtung wie v.

Normierung von Vektoren

1

1

1

v

u =

w

normierte Vektorenhaben die Länge Eins

Page 9: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 9

Behauptung: Das Skalarprodukt v∙w ist Null, falls v rechtwinklig zu w steht.

Beweis: Wenn v und w rechtwinklig zueinander stehen, bilden sie zwei Seiten eines rechtwinkligen Dreiecks. Die dritte Seite ist dann v-w (Hypothenuse).

Damit wird aus für die Seitenlängen (für senkrechte Vektoren!):

daraus leiten wir ab

Winkel zwischen Vektoren und Skalarprodukt I

und wir erhalten wiedergerade das Skalarprodukt

Page 10: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 10

Wenn das Skalarprodukt v∙w ungleich Null ist, kann es positiv oder negativ sein.

Winkel zwischen Vektoren und Skalarprodukt II

v

.v

v‘

w

w

ist es positiv, so ist der Winkelzwischen ihnen <90°

ist es negativ, so ist der Winkelzwischen ihnen >90°

Page 11: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 11

Konkrete Winkelbestimmung I

u=

Additionstheorem

i=

u=

v=

Wenn u und v Einheitsvektoren sind, so gilt u∙v=cos und es gilt der absolute Betrag|u∙v|≤1. Das Skalarprodukt zweier Einheitsvektoren liegt zwischen -1 und 1.

u∙i = cos ∙1+sin ∙0=cos u∙v = cos ∙cos +sin ∙sin =cos( - )

Diese Winkelbestimmung gilt für beliebige Dimensionen.

Page 12: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 12

Für Vektoren, die keine Einheitsvektoren und ungleich dem Nullvektor sind, gilt dann die Kosinusformel:

Korrekterweise begegnet man dem Skalarprodukt v∙w nicht so ∙ , sondernso:

Später, nach Einführung der Matrizen, werden wir den Unterschied besser verstehen. Den Winkel erhalten wir schließlich mit:

Konkrete Winkelbestimmung II

Alternativ können wir auch rechnen:

Page 13: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 13

Lineare Algebra in der Praxis.

Page 14: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 14

Seien die m Vektoren der Dimension n in Menge V gegeben

Zentrieren einer Menge von Vektoren

Zentrum (Schwerpunkt) der Vektorenmenge

Verschiebung aufUrsprung

D.h. wir ziehen von allen Vektoren der Menge ab, um diese zu

zentrieren:

, mit

Anschließend liegen die Vektoren mit zentriert vor.

Page 15: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 15

Als praktische Anwendung wollen wir ein Clustering-Verfahren kennenlernen.

10 Klassen werden dabei unter-schieden. Für die entsprechende Klasse wird eine 1.0 vermerkt, alle anderen mit 0.0 (Etikette oder Label).

1000 Ziffernbilder wurden von Menschen klassifiziert und liegen als Trainingsmenge TMin einer Datenbank zur Verfügung.

Ziel ist es, einen Klassifikator zu entwerfen, der mit Hilfe der klassifizierten Daten, unbekannte korrekt klassifiziert. Zunächst bringen wir die Bilddaten in eine Vektorform, das geht sehr einfach:

wir konstruieren einen 192-dim Vektor

0.0 0.0 ... 1.0 ...

3

Praktische Anwendung (Mustererkennung)

12

16

0.0 0.0 ...

0.0 0.5 1.0 ...

i

Bildwerte für i liegen im Intervall [0.0, 0.1, ..., 1.0]

Zeile 1

Zeile 2

Zeile 16

... ...Zeile 1 Zeile 2 Zeile 16

Page 16: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 16

x

Um für einen unbekannten Vektor u zu entscheiden, welcher Klasse er amwahrscheinlichsten angehört, wird der Abstand dist(u, ) für alle berechnet. Diek nächsten entscheiden demokratisch über u.

Beispiel:

3 Klassen liegen im 2-dim Raum vor, das rote xist ein unbekannter Vektor und k ist 3 (ungeradeund klein).

Auf Grund der Tatsache, dass 2 mal Kreis und 1 mal Viereck vertreten sind, schlußfolgernwir, dass es sich bei dem x um einen Kreis handelt. Falls keine Klärung an dieser Stellemöglich ist, können wir k variieren, per Zufall entscheiden oder die Zentren der Klassenmit einbeziehen.

Verfahren: k-nächste Nachbarn

Page 17: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 17

In der Computergrafik „dreht sich alles“ um Lineare Algebra

Page 18: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 18

Das Kreuzprodukt (oder Vektorprodukt) von zwei Vektoren erzeugt einen neuen Vektor,der senkrecht zu den beiden steht.

Das Vektoren-Kreuzprodukt

Für zwei 3-dimensionale Vektoren ist es gerade definiert als:

(für ein rechtshändiges

Koordinatensystem)

wir können das aber auch wie folgt ausdrücken:

Ob der Ergebnisvektor senkrecht zu v und w ist, lässt sich über das Skalarprodukt leichtermitteln:

w analog

Page 19: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 19

Die Richtung des Vektors kann mit der rechten Hand angegeben werden:

Kreuzprodukt im rechtsh. Koordinatensystem

linkshändig rechtshändig

Wenn wir die Vektoren vertauschen, wird der Ergebnisvektor negiert.

Es gilt , denn das Kreuzprodukt ist nicht kommutativ! Es ist auch nichtassoziativ.

Page 20: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 20

Beim Kreuzprodukt zweier Einheitsvektoren ergibt sich der entsprechende dritte:

Wenn wir die Vektoren im Kreuzprodukt vertauschen, erhalten wir selbstverständlich dienegierten Einheitsvektoren:

Für zwei gleiche Einheitsvektoren liefert das Kreuzprodukt immer den Nullvektor

Kreuzprodukt und Einheitsvektoren

Page 21: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 21

Aus Sicht einer 3D-Engine gibt es in Wahrheit noch viel mehr Koordinatensysteme. Die wichtigsten fünf sind:

world space

Spielumgebung

model space (object space, local space)

Kreierte Objekte

view space (camera space, eye space)

Sicht des Betrachters

clip space (projection space, homogeneous space)

Projektion in und Repräsentation im 2D-Raum

window space

Bildschirmkoordinaten für Ausgabe

Koordinatensysteme und Transformationen II

alles kartesische Koordinatensysteme

Page 22: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 22

Wir haben es in der Computergrafik/Spieleentwicklung ständig mit verschiedenenKoordinatensystemen zu tun. Es gibt beispielsweise ein System, das die Weltrepräsentiert (world space) und alle vorhandenen Objekte kennt.

Koordinatensysteme und Transformationen I

world space local space

Jedes Objekt für sich hat aber meistens ein eigenes, lokales Koordinatensystem (localspace).

Wir können jetzt die Welt so transformieren, dass wir sie aus der Sicht des Objektessehen. Anschließend können wir lokale Betrachtungen/Berechnungen sehr viel einfachervornehmen.

Page 23: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 23

Transformationen Objekt vs. Koordinatensystem

Page 24: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 24

SimpleSoccer – Eine einfache Fußballsimulation

Page 25: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 25

Hallenfußball - 5 gegen 5

Bande

Torlinie

Page 26: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 26

Feldaufteilung für Positionierung

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Page 27: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 27

Die drei Zustände der Mannschaften

Anstoss Verteidigung

Angriff

Startpositionen der Spieler

Angriffsformation

Verteidungsformation

Page 28: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 28

Bewegungen des Torhüters

Page 29: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 29

Torhüter im Zustand TendBall

Zwischen Ball und Tor positionieren

Page 30: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 30

Grobe Bewertung der Mitspieler

B

A

CD

gut

schlecht riskant

Page 31: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 31

Ermittlung des Best Support Spot (BSS)

Page 32: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 32

BSS – Potential für weitere Pässe

Page 33: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 33

BSS – Potential für Torschuss

Page 34: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 34

BSS – Entfernung zu Gegenspieler

Page 35: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 35

SimpleSoccer – Visualisierung des BSS

Page 36: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 36

Schlüsselmethode: Sicherheit eines Passes

A

B

X

Y

W

Z

Page 37: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 37

Schlüsselmethode: Sicherheit eines Passes

A

B

X

Y

W

Z

Page 38: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 38

Schlüsselmethode: Sicherheit eines Passes

Page 39: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 39

Angenommen, wir haben zwei Koordinatensysteme. A mit x, y und z und B mit x‘, y‘und z‘. Jetzt wollen wir v aus A nach B transformieren:

Koordinatentransformationen im 3D I

Page 40: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 40

Wir konstruieren den neuen Vektor v‘ also über:

Koordinatentransformationen im 3D II

In Koordinatensystem A gilt und nach der Transformation gilt:

Für die Rücktransformation nutzen wir die Eigenschaft von orthogonalen Matrizen aus,denn es gilt .

Daher gilt die Vorschrift:

Das macht uns die Hin- und Rücktransformationen sehr einfach.

So macht uns Mathematik Spaß!

Page 41: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 41

Ein Beispiel dazu aus dem 2-dimensionalen Raum. Wir wollen Vektoren aus demKoordinatensystem A in das um 45° gedrehte System B transformieren:

Beispiel im 2D-Raum I

21

1

2

1

-1

sin x cos x

Transformieren wir den Vektor v=(2,1) aus A nach B:

Warum ist dieser Schritt sinnvoll?

Page 42: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 42

Transformieren wir den Vektor v=(2,1) von A nach B komplett (links) und zeigenanschließend mit Hilfe der transponierten Matrix, dass der ursprüngliche Vektor verfolgreich reproduziert werden kann:

Beispiel im 2D-Raum II

wir wissen (vielleicht noch) aus der Schule, dass

... und wir erhalten .

Page 43: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 43

Das vorhergehende Beispiel hat uns nicht nur gezeigt, dass für orthogonale Matrizen dieInverse gerade die Transponierte ist, sondern darüber hinaus eine allgemeineTransformationsvorschrift für die Rotation im 2-dimensionalen Raum geliefert.

Transformationsvorschrift für Rotation

Die allgemeine Rotationsvorschrift lautet:

, mit

Wir können damit zwar die Achsen in verschiedene Richtungen rotieren, aber derUrsprung bleibt jeweils der gleiche. Die Objekte sollen sich aber nicht alle im Ursprungbefinden.

Dazu benötigen wir noch einen Translationsvektor:

das führt uns zu:

Zwei Dinge machen diese Form der Transformation nicht besonders schön:

1) Eine Transformation benötigt zwei Verarbeitungsstufen und 2) die Transformation unterscheidet nicht zwischen Vektoren die Punkte repräsentieren

und Vektoren die Richtungen repräsentieren.

Page 44: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 44

Dafür gibt es mit den homogenen Koordinaten eine elegante Lösung. Es wird eine weitereKomponente hinzugefügt. Wenn Vektoren Richtungen repräsentieren, dann wird die w-Koordinate auf Null gesetzt. Ein Positionsvektor wird mit w=1 entsprechend markiert.

Homogene Koordinaten

world space

local space

Positionsvektoren

RichtungsvektorDie 3x3-Matrix mit Translationsvektor:

wird zu den homogenen Koordinaten wie folgt transformiert:

Es ist auch möglich, dass die w-Komponente weder 0 noch 1 ist, dann gilt:

Page 45: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 45

Physikalische Spielereien sind so einfach mit Linearer Algebra.

Page 46: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 46

Ein autonomer Agent, bestimmt seine Bewegung innerhalb einer gegebenen Welt durchfolgende drei Faktoren:

� Auswahl eines abstrakten Ziels/Plans (Action selection)

� Steuerung durch Einfluss unterschiedlicher Kräfte, die physikalischer oder spieltech-nischer Natur sind (Steering)

� Physikalisches Verhalten und Fähigkeiten der Fortbewegung (Locomotion)

� Modell unseres Agenten in der Umwelt:

Verhalten autonomer Agenten

Agent1

Hinderniss

Agent3

Agent2

Ziel (Plan)

Page 47: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 47

Eigenschaften und Aufbau eines Agenten

Position

GeschwindigkeitGeschwindigkeit

Fahrtrichtung(normalisierter Ge-schwindigkeitsvektor)

Senkrechte zur Fahrtrichtung(normalisiert)

Massemax. Geschwindigkeitmax. Kraftmax. Drehrate

Position

Page 48: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 48

Wenn wir einen Zielpunkt Ziel gegeben haben, dann gibt es eine Steuerungskraft, die direktin die Richtung des Ziels zeigt.

Steuerungskraft: Ziel folgen

norm (Zielkraft) maxGeschwindigkeit.

AgentPos

ZielPos

Zielrichtung ZielPos - AgentPos=

Geschwindigkeit

Zielkraft Zielrichtung - Geschwindigkeit=

Page 49: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 49

Wir haben gesehen, dass unser Agent um das Ziel manövriert und nicht zur Ruhe kommt.Damit wir die Geschwindigkeit drosseln können, müssen wir den Agenten in Abhängigkeitzum Objektabstand abbremsen.

Steuerungskraft: Ziel erreichen

Ziel folgen in Abhaengigkeit des Abstands

Geschwindigkeit

Page 50: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 50

Von einem Zielpunkt (kann sich bewegen) zu fliehen entspricht einfach nur dem negiertenFolgen.

Steuerungskraft: fliehen

Ziel folgen

Geschwindigkeit

fliehen - (Ziel folgen)=

Page 51: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 51

Wie lassen sich diese Kraftvektoren verwenden?Ein Beispiel kennen wir aus der Vergangenheit …

Page 52: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 52

Bisher waren die beiden Funktionen update() und render() noch abhängig von t:

Funktionen update und render

...public void renderLoop() {

while (!Display.isCloseRequested()) {loescheBildschirm();

for (int i=1; i<=flummies.getFlummiSize(); i++) {Flummi aktFlummi = flummies.getFlummi(i);aktFlummi.update();aktFlummi.render();

}

Display.update();}

}...

Page 53: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 53

Ein Blick in die update-Funktion zeigt die Anpassung der Position in Abhängigkeit zurGeschwindigkeit:

Funktionen update und render

public class VerhaltenPerfekterFlummi implements Verhalten {private Flummi flummi;

public VerhaltenPerfekterFlummi(Flummi flummi) {this.flummi = flummi;

}

@Overridepublic void update() {

flummi.yPos += flummi.ySpeed;

if (flummi.yPos>480 || flummi.yPos<0)flummi.ySpeed *= -1;

}}

Die Geschwindigkeit direkt auf die Position zu addieren klingt zunächst nicht unplausibel, aberwie müssten wir das jetzt mit den Kräften in Einklang bringen?

Page 54: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 54

Vektoren erleichtern uns die Handhabung der Parameter.

Page 55: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 55

Wir führen drei nützliche Klassen zur Verwendung von Linearer Algebra ein:

Vektor2D, Vektor3D und LineareAlgebra

package math;

public class Vektor2D {public float x, y;

public Vektor2D() {this(0, 0);

}

public Vektor2D(float x, float y) {setX(x);setY(y);

}

public Vektor2D(Vektor2D vec) {this(vec.x, vec.y);

}

public Vektor2D(float x, float y, float x2, float y2) {this(x2 - x, y2 - y);

}

public Vektor2D(Vektor2D a, Vektor2D b) {this(b.getX() - a.getX(), b.getY() - a.getY());

}

public void setPosition(Vektor2D vec) {setX(vec.getX());setY(vec.getY());

}

public boolean isNullvector() {return (x == 0 && y == 0);

}

public void add(Vektor2D vec) {x += vec.x;y += vec.y;

}...

}

package math;

public class Vektor3D {public float x, y, z;

public Vektor3D() {this(0, 0, 0);

}

public Vektor3D(float x, float y, float z) {setX(x);setY(y);setZ(z);

}

public Vektor3D(Vektor3D vec) {this(vec.getX(), vec.getY(), vec.getZ());

}

public Vektor3D(float x, float y, float z, float x2, float y2, float z2) {

this(x2 - x, y2 - y, z2 - z);}

public Vektor3D(Vektor3D a, Vektor3D b) {this(b.getX() - a.getX(), b.getY() - a.getY(),

b.getZ() - a.getZ());}

public void setX(float x) {this.x = x;

}

public float getX() {return x;

}...

}

package math;

public class LineareAlgebra {private LineareAlgebra() {};

public static Vektor2D add(Vektor2D vec1, Vektor2D vec2) {

return new Vektor2D(vec1.getX()+vec2.getX(), vec1.getY()+vec2.getY());

}

public static Vektor3D add(Vektor3D vec1, Vektor3D vec2){

return new Vektor3D(vec1.getX()+vec2.getX(), vec1.getY()+vec2.getY(), vec1.getZ()+vec2.getZ());

}

public static Vektor2D sub(Vektor2D vec1, Vektor2D vec2) {

return new Vektor2D(vec1.getX()-vec2.getX(), vec1.getY()-vec2.getY());

}

public static Vektor3D sub(Vektor3D vec1, Vektor3D vec2){

return new Vektor3D(vec1.getX()-vec2.getX(), vec1.getY()-vec2.getY(),vec1.getZ()-vec2.getZ());

}

public static Vektor2D mult(Vektor2D vec, float s) {return new Vektor2D(vec.getX()*s, vec.getY()*s);

}

...}

Page 56: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 56

Die Klassen werden entsprechend angepasst. Hier das Resultat der Anpassung von derKlasse VerhaltenPerfekterFlummi:

Anpassung an Vektoren

public class VerhaltenPerfekterFlummi implements Verhalten {private Flummi flummi;

public VerhaltenPerfekterFlummi(Flummi flummi) {this.flummi = flummi;

}

@Overridepublic void update() {

flummi.position.add(flummi.velocity);

if (flummi.position.y>480 || flummi.position.y<0)flummi.velocity.y *= -1;

}}

Page 57: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 57

Allerdings wirken Objekte mit konstanten Geschwindigkeiten nicht sehr realisitisch.

Page 58: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 58

Wir erweitern das Objektmodell mit position/velocity umacceleration

Vektor3D

Vektor3D

Vektor3D

Page 59: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 59

Die Funktion update wird um die Beschleunigung (acceleration) erweitert:

Erweiterung um acceleration

public void update() {velocity.add(acceleration);velocity.truncate(maxSpeed);position.add(velocity);

}

Page 60: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 60

1) Erzeugen Sie viele Flummies und verwenden zufällige Beschleunigungsvektoren zurÄnderung der Geschwindigkeiten.

2) Erzeugen Sie eine Beschleunigung in Richtung eines Mausklicks und sehen was passiert.Kennen Sie eine Möglichkeit, genau bei dem Mausklick zu landen?

Übungsvorschläge

Page 61: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 61

„A force is a vector that causes an object with mass to accelerate.“ (Newton)

Ein Blick ins Physikbuch

Newton hat noch mehr schlaue Sachen gesagt:

I) Newtons first law of motion:

„An object at rest stays at rest and an object in motion stays in motion.“

„… at a constant speed and direction unless acted upon by an unbalanced force.“

„An objects velocity (Vektor3D) will remain constant if it is in a state of equilibrium.“

III) Newtons third law of motion:

„For every action there is an equal and opposite reaction.“

„Forces always occur in pairs. The two forces are of equal strength, but opposite

direction.“

II) Newtons second law of motion:

„Force equals mass times acceleration.“�� � � ∙ ��

�� � ���

Page 62: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 62

Hier der kleine aber feine Unterschied (bzw. Zusammenhang) von Masse und Gewicht:

Masse [kg]

Gewicht = Masse • g [N = newton]

Ein Objekt mit der Masse von 1 kg auf der Erde hat auch 1 kg Masse auf dem Mond. DasObjekt wiegt allerdings nur ein Sechstel auf dem Mond!

Gewicht versus Masse

Gravitationsbeschleunigung

Page 63: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 63

Dann wollen wir unser Konzept verfeinern

Page 64: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 64

Wenn wir die Masse für einen Moment mal ausser Acht lassen und nur die Kraft betrachten:

Erweiterung um acceleration

applyForce(Vektor3D force) {acceleration = force;

}

Wenn wir später aber mehrere Kräfte hinzufügen wollen

applyForce(wind);applyForce(gravitation);...

benötigen wir hier die Akumulation von Kräften:

object.applyForce(wind);object.applyForce(gravitation);object.update();object.render();...

Page 65: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 65

Ein Blick ins Physikbuch

Die gute Nachricht: „Net Force equals mass times acceleration.“

����

Dann müssen wir bei der Funktion update allerdings darauf achten, die Beschleunigungimmer zu initialisieren, bzw. am Ende zu löschen:

public void update() {velocity.add(acceleration);velocity.truncate(maxSpeed);position.add(velocity);acceleration.mult(0);

}

Page 66: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 66

Jetzt führen wir die Masse ein.

Page 67: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 67

Wir erweitern das Objektmodell mit den Eigenschaften position/velocity/acceleration um mass

Vektor3D float

Page 68: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 68

Wir könnten die Masse in applyForce direkt mit dem Kraftvektor verrechnen:

Einführung von mass (Versuch 1)

applyForce(Vektor3D force) {force.div(mass);acceleration = force;

}

�� � � ∙ ��

�� � ���

Page 69: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 69

Was könnte schief gehen?

Page 70: computergrafikII 10 Physikalische Spielereien · Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 5 Schauen wir uns noch einmal die Trigonometrie (trigon,

Prof. Dr. Marco Block-Berlitz Vorlesung Computergrafik II SoSe 2014 Folie 70

Mit dieser Version der applyForce-Methode ändern wir den Kraftvektor, was Auswirkungenauf weitere Funktionsaufrufe hätte:

Einführung von mass (Versuch 2)

Wir könnten aber einmal eine Kraft berechnen und diese auf mehrere Akteure anwenden:

wind = ...obj1.applyForce(wind);obj2.applyForce(wind);...

applyForce(Vektor3D force) {force.div(mass);acceleration.add(force);

}

Eine einfache Lösung lautet:

applyForce(Vektor3D force) {Vektor3D forceCopy = new Vektor3D(force);forceCopy.div(mass);acceleration.add(forceCopy);

}