2D-Spielewelten Softwaretechnologie II Christian Daum.

39
2D-Spielewelten Softwaretechnologie II Christian Daum

Transcript of 2D-Spielewelten Softwaretechnologie II Christian Daum.

Page 1: 2D-Spielewelten Softwaretechnologie II Christian Daum.

2D-Spielewelten

Softwaretechnologie IIChristian Daum

Page 2: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Ausgangssituation: Die Erde beschreibt eine kreisförmige Bahn um die Sonne auf einem „Einheitskreis“

Daraus folgt ein konstanter Abstand zum Mittelpunkt – also zur Sonne;

Die Sonnenbewegung selbst wird vernachlässigt

Abstand Erde zur Sonne: ca. 150 Millionen km = ca. 1 astronomische Einheit (aU)

Aufgabenstellung I: Simulation der Erdbewegung um die Sonne (in Echtzeit bitteschön)

Page 3: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Vorgehensweise:

Step 1: Wahl des Koordinatensystems

a) Dimensionen

b) Koordinatenursprung

Step 2: Bestimmung der Erd- & Sonnenposition im Koordinatensystem durch Vektoren

[Exkurs Vektoren]

Step 3: Simulation der Erdbewegung

a) Berechnung aller möglichen Varianten der Erdposition auf Ihrer Umlaufbahn

b) Berechnung der Bewegungsrichtung der Erde

c) Berechnung der Kräfte, welche die Erde auf ihrer Umlaufbahn halten

Page 4: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 1: Wahl des Koordinatensystems

a) Dimensionen: Die Erde beschreibt ihre Umlaufbahn hier auf 1 Ebene -> ergo ist ein 2D-Koordinatensystem zur Positionsbeschreibung ausreichend

b) Wahl des Ursprungs (0/0) des K-Systems: Prinzipiell frei wählbar -> Empfehlung: Die Erdbewegung sollte sich möglichst einfach beschreiben lassen -> also Sonnenmittelpunkt als Ursprung (Kreisbahn -> konstanter Abstand Erde-Sonne -> konstante Sonnenposition)

Page 5: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 2: Bestimmung der Erd- & Sonnenposition im Koordinatensystem durch Vektoren

Aktuelle Erdposition: Durch Ortsvektor s definiert (auch „Abstandsvektor“ genannt) (hier zugleich Einheitsvektor, da konstanter Abstand von 1 aU zum Koordinatenursprung)

Ortsvektor der Erde ist zudem von der Erdbewegung – und damit von der Zeit – abhängig (man nennt ihn deshalb auch eine „Funktion der Zeit“ – s(t) ausgedrückt)

Sonnenposition: Ebenfalls durch einen Ortsvektor definiert (hier zugleich jedoch Nullvektor, da der Ortsvektor der Sonne in Ihrer Funktion als Koordinatenursprung eine Länge von 0 hat, die sich nicht durch einen Pfeil visualisieren lässt)

s(t) = Ortsvektor Erde

v(t) = Geschwindigkeitsvektor Erde

Page 6: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Wo Se grad sagen „Vektor“: Exkurs Vektoren I

Definition Vektor:

Eine Liste von Komponenten (reellen Zahlen, welche jeweils Dimensionen repräsentieren).

Vektoren können geometrisch durch Pfeile repräsentiert werden. Die Komponenten eines Vektors bestimmen dabei Länge & Richtung dieser Pfeile.

Man bezeichnet Vektoren auch als „gerichtete Größen“ – im Gegensatz zu Skalaren (Zahlen) als „ungerichteten Größen“.

2 Schreibweisen für Vektoren (hier 2dimensional):

Unterscheidung durchaus bedeutsam: DirectX arbeitet z.B. mit Zeilenvektoren...

Page 7: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Wo Se grad sagen „Vektor“: Exkurs Vektoren II

Vektorarten:

Ortsvektor: Definiert den Ort eines Punktes (die Vektorkomponenten werden hier mit Punktkoordinaten identifiziert)

Einheitsvektor: Vektor, dessen Betrag („Länge“) gleich 1 ist.

Verbindungsvektor: Verbindung zwischen zwei Punkten. Der Verbindungsvektor ist damit die Differenz zwischen zwei Ortsvektoren. Der Abstand zweier Punkte ist der Betrag ihres Verbindungsvektors.

Nullvektor: Ein Vektor, dessen Komponenten alle 0 sind. Geometrisch betrachtet also der Verbindungsvektor eines Punktes mit sich selbst. Als Ortsvektor interpretiert ist er damit deckungsgleich mit dem Koordinatenursprung.

Page 8: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Wo Se grad sagen „Vektor“: Exkurs Vektoren III

Addition & Subtraktion von Vektoren:

Relevanz: Beispielsweise für die Berechnung eines Zielanflugvektors

Sowohl Addition als auch Subtraktion von Vektoren erfolgen komponentenweise:

Page 9: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Wo Se grad sagen „Vektor“: Exkurs Vektoren IVBerechnung von Skalarprodukten

Skalarprodukt: Rechenoperation, die aus zwei Vektoren gleichen Typs einen Skalar generiert.

Das Skalarprodukt gibt Auskunft über die relativen Richtungen zweier Vektoren a und b:

a b > 0 a und b schließen einen spitzen Winkel ein

a b < 0 a und b schließen einen stumpfen Winkel ein

a b = 0 a und b stehen „normal“ aufeinander

a) Skalarprodukt der beiden zweikomponentigen Vektoren a = (a1, a2) und b = (b1, b2)

Formel: a b = a1b1 + a2b2

Alternative Notation (Buch):

b) Skalarprodukt eines Vektors s mit sich selbst (durch Multiplikation mit sich selbst):

Formel: s2 = x2 + y2

Alternative Notation (Buch):

c) Betrag („Länge”) eines Vektors s (durch Wurzel des Skalarproduktes eines Vektors mit sich selbst):

Formel: | s | = (s12 + s2

2)1/2

Alternative Notation (Buch):

Page 10: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Wo Se grad sagen „Vektor“: Exkurs Vektoren VBerechnung von Skalarprodukten – Merksätze & Beispiele:

a) Das Skalarprodukt zweier senkrechter (linear unabhängiger/orthogonaler) Vektoren ist 0!

Bsp.: Vektoren a = (0, 1) und b= (1, 0)

b) Das Skalarprodukt zweier paralleler (in gleiche Richtung zeigender) Vektoren ist gleich dem Produkt der Beträge der beiden Vektoren!

Bsp.: Vektoren a = (2, 0) und b= (3, 0)

c) Das Skalarprodukt zweier antiparalleler (in entgegengesetzte Richtung zeigende) Vektoren ist gleich dem Produkt der Beträge der beiden Vektoren mal –1!

Bsp.: Vektoren a = (-2, 0) und b= (3, 0)

Page 11: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Wo Se grad sagen „Vektor“: Exkurs Vektoren VIBerechnung von Skalarprodukten – Fazit:

Das Skalarprodukt ergibt sich aus der Multiplikation der Beträge der Vektoren sowie einem Faktor, der sich aus dem Winkel Alpha ergibt, in welchem die Vektoren zueinander stehen. Dieser Faktor ist …

… 1, wenn dieser Winkel 0 ° beträgt, (cos 0° = 1)

… 0, wenn er 90 ° ist, (cos 90° = 0)

… -1, wenn er 180 ° beträgt. (cos 180° = -1)

Die Kosinusfunktion erfüllt oben genannte Anforderungen -> für ein beliebiges Skalarprodukt gilt also:

Oder via DirectX-Funktion:

Page 12: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 3: Simulation der Erdbewegunga) Berechnung aller möglichen Varianten der Erdposition auf Ihrer Umlaufbahn

Durch Umrechnung des (Einheits-)Ortsvektors der Erde in die sog. zweidimensionale Polarkoordinatendarstellung (= Beschreibung eines Vektors durch einen Winkel sowie den Vektorbetrag)

Logo – mithilfe der trigonometrischen Funktionen!

a) x-Komponente des Einheitsvektors: Kosinus des Winkels , der von diesem Vektor & der x-Achse eingeschlossen ist

b) y-Komponente des Einheitsvektors: Sinus desselben Winkels

Vektor der Erde als Polarkoordinate ausgedrückt – Variante I (wenn Ortsvektor zugleich Einheitsvektor – also mit konstantem Betrag):

Vektor der Erde als Polarkoordinate ausgedrückt – Variante II (wenn Ortvektor nicht Einheitsvektor – also mit variierendem/ beliebigem Betrag):

Page 13: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 3: Simulation der Erdbewegungb) Berechnung der Bewegungsrichtung der Erde

Ausgangssituation: -> Die Bewegungsrichtung der Erde wird durch einen Vektor ausgedrückt -> v(t) -> Die Länge dieses Vektors entspricht dem Geschwindigkeitsbetrag

Problem/Aufgabe: -> Die Geschwindigkeitsrichtung muss variieren, damit die Erde nicht aus der Umlaufbahn schießt

-> Nicht nur der Ortsvektor der Erde variiert also in der Zeit, sondern auch der ihm zugehörige Winkel -> Gesucht ist also sowohl eine Formel für den Ortsvektor als Funktion der Zeit als auch ein Ausdruck für den Winkel des Ortsvektors als Funktion der Zeit

Page 14: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 3: Simulation der Erdbewegungb) Berechnung der Bewegungsrichtung der Erde

Lösung: Mithilfe von Geschwindigkeitsvektoren & Winkelgeschwindigkeit

a) Berechnung der Winkelgeschwindigkeit w nach folgender Formel (Winkelgeschwindigkeit notwendig für b) !)

-> wobei T = Umlaufzeit & 2 Pi = Umlaufbahn auf dem Einheitskreis

b) Berechnung des Winkels Alpha des Ortsvektors s als „Funktion der Zeit“ nach folgender Formel: (Alpha(t) notwendig für c) !)

c) Berechnung der Ortsvektors s der Erde als Funktion der Zeit

Page 15: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 3: Simulation der Erdbewegungc) Berechnung der Kräfte, welche die Erde auf ihrer Umlaufbahn halten

Berechnung mithilfe von Beschleunigungs- & Kraftvektoren möglich

Erläuterung der relevanten Kräfte am Bsp. eines Kettenkarussells:

FZP = ZentripetalkraftÜber die Kette ausgeübte Kraft, welche den Sitz in der Kreisbahn hält (zur Mitte strebende Kraft)ZentripetalbeschleunigungDurch FZP auf den Sitz ausgeübte Beschleunigungskraft(ebenfalls zur Mitte strebende Kraft) Sowohl Kraft als auch Beschleunigung wirken also in dieselbe Richtung!

FZF = ZentrifugalkraftAuch Fliehkraft: nach außen wirkende Gegenkraft zur FZP

V(t) = Geschwindigkeitsvektor Bei reißender Kette fliegt der Sitz aufgrund seiner Massenträgheit in genau diese Richtung aus der Bahn

Page 16: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 3: Simulation der Erdbewegungc) Berechnung der Kräfte, welche die Erde auf ihrer Umlaufbahn halten

Zusammenspiel FZP & FZF

Die beiden Kraftvektoren FZP & FZF zeigen zwar in entgegengesetzte Richtungen – sind vom Vektorbetrag her jedoch identisch.

Addiert man beide Vektoren, heben sich die Kräfte gegenseitig auf (Ergebnis ist also ein Nullvektor)

S. a. schwereloser Astronaut im Erdorbit: FZP & FZF heben sich gegenseitig auf (die FZP wird hier natürlich nicht durch eine Kette sondern durch Massenanziehungskraft zw. Astronaut & Erde verursacht)

Bei der Erdumlaufbahn wird die FZP dementsprechend durch die Massenanziehungskraft zw. Erde & Sonne verursacht

Kraftgesetz: Allgemeine Definition einer Kraft

Wirkt eine Kraft F auf eine Masse m, wird diese um a Beschleunigt:

F = m * a

Kraft = Masse * Beschleunigung

Page 17: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Step 3: Simulation der Erdbewegungc) Berechnung der Kräfte, welche die Erde auf ihrer Umlaufbahn halten

Kraftgesetz der Gravitationskraft:

rN = Einheitsrichtungsvektor Definiert die Richtung der Kraft

• G = Gravitationskonstante: Scheinbar frei wählbarer Zahlenwert; definiert die Einheit, in welcher die Kraft ausgedrückt werden soll – gleichsam die „Krafteinheit“ bzw. „Kraftgröße“. Physiker hingegen müssen sich an eine internationale Konvention halten & die Kraftgröße mit der Einheit SI angeben:

SI-Einheit der Kraft: Newton SI-Einheit der Masse: Kilogramm SI-Einheit der Beschleunigung: Meter / Quadratsekunde

Page 18: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Das Raumschiff: Benötigt: Ein Drahtgittermodell des Raumschiffs zwecks 3dimensionaler Darstellung

Alle Eckpunkte („Vertices“) unseres Raumschiffs werden in ein lokales Koordinatensystem eingetragen & anschließend miteinander verbunden:

Aufgabenstellung: Simulation eines Raumflugs (wahrscheinlich auch in Echtzeit, bitteschön)

Lokales Koordinatensystem (auch Modellkoordinatensystem):

Nur für das jeweilige, in diesem Koordinatensystem erzeugte Objekt von Bedeutung

Weltkoordinatensystem:

Definiert die eigentliche Spielewelt, in welche später die entsprechenden Objekte transformiert werden

Page 19: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Aufgabe: Der Schiffsrumpf soll skaliert werden

Benötigt werden 2 Skalierungsfaktoren scaleX & scaleY (analog zu den Dimensionen des Modellkoordinatensystems)

Holla die Waldfee – das Raumschiff ist zu klein:

„Regulärer Ortsvektor“ eines Schiffs-Vertex:

Skalierter Ortsvektor eines Schiffs-Vertex:

Durch Multiplikation der Komponenten des Ortsvektors mit den entsprechenden Skalierungsfaktoren, lässt sich der Ortsvektor – & damit das Schiff – beliebig skalieren:

Page 20: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Unser Schiff soll im Weltkoordinatensystem einen Ortsvektor s haben:

Im Modellkoordinatensystem hat unser Schiff – wie bereits gezeigt – ebenfalls einen Ortsvektor (v):

Transformation: Durch Addition der Komponenten des Ortsvektors s im Weltkoordinatensystem zu den Komponenten des Ortsvektors v im Modellkoordinatensystem erfolgt die Transformation des Schiffes in das Weltkoordinatensystem:

Ready to take off I – Transformation des Raumschiffes in das Weltkoordinatensystem

Page 21: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Eine Schiffsbewegung entspricht einem in der Zeit variierenden Ortsvektor s:

Ready to take off II – Translationsbewegung des Schiffes

s(t) Ortsvektor des Schiffs zum Zeitpunkt t

s(t+Δt) Ortsvektor des Schiffs zum Zeitpunkt t+Δ t

Δs Strecke, die das Schiff in der Zeitspanne Δ t zurücklegt (=Verschiebungsvektor)

Formel zur Geschwindigkeitsberechnung:

Formel zur Bewegungssimulation:

Page 22: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Problem: Zwar bewegt sich das Schiff, allerdings sind dessen Vertices nicht korrekt ausgerichtet

Lösung: Die Vertices müssen entsprechend des gewünschten Kurses um den Schiffsmittelpunkt neu ausgerichtet werden – allerdings erneut im Modellkoordinatensystem

Ready to take off III – Rotation des Schiffes (Nase auf Kurs bringen)

Formeln zur Rotationsberechnung: Folgende Spezialfälle müssen berücksichtigt werden:

Dies leisten folgende Formeln:

Die Schiffsrotation erfolgt um die hier nicht dargestellte z-Achse

Page 23: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Problem: Die bisherigen Lösungsansätze zur Manipulation des Schiffes (skalieren, rotieren, verschieben..) erfüllen zwar ihren Zweck, sind jedoch zu langsam, da sie zahlreiche Rechenoperationen erfordern.

Lösung: Mit Hilfe von Matrizen lassen sich sowohl Skalierung, Rotation als auch Translation in einem Schritt erledigen.

Definition Matrix:

Eine Anordnung von Zahlenwerten in Tabellenform mit m Zeilen und n Spalten.

Diese Zeilen und Spalten werden auch als Zeilen- bzw. Spalten-Vektoren einer Matrix bezeichnet.

Wie bei Vektoren spricht man bei den Einträgen einer Matrix von deren Komponenten

Welttransformation mit Matrizen Exkurs Matrizen I

Page 24: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Definition: Eine quadratische Matrix, deren Hauptdiagonale nur aus 1en besteht - alle restlichen Komponenten bestehen ausschließlich aus 0en:

Regel: Eine Multiplikation eines Vektors oder einer Matrix mit einer Einheitsmatrix liefert als Ergebnis immer den Vektor oder die Matrix selbst:

Exkurs Matrizen II: Die wichtigsten Matrizen & RegelnDie Einheitsmatrix

Multiplikation mit Vektor:

Multiplikation mit Matrix:

Page 25: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Definition: Tataa – eine solche besteht ausschließlich aus 0en:

Regel: Eine Multiplikation eines Vektors oder einer Matrix mit einer Nullmatrix liefert als Ergebnis immer einen Null-Vektor oder eine Null-Matrix:

Exkurs Matrizen III: Die wichtigsten Matrizen & RegelnDie Nullmatrix

Page 26: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Addition & Subtraktion von Matrizen: Funktionieren analog zur Addition & Subtraktion von Vektoren komponentenweise. Auch hier gilt die Bedingung: Die Dimensionen müssen übereinstimmen!

Multiplikation mit einem Skalar:

Matrizenmultiplikation I: Funktionsweise der Multiplikation analog zum Skalarprodukt zweier Vektoren (logo: Ein Vektor ist letztlich nichts anderes als eine einzeilige bzw. einspaltige Matrix): Multiplikationsregel für Matrizen: Komponentenweise Zeile mal Spalte!

Exkurs Matrizen IV: Die wichtigsten Matrizen & RegelnAddition, Subtraktion & (Matrizen-)Multiplikation

Multiplizieren der Zeilen der ersten Matrix mit den Spalten der zweiten Matrix und anschließende Addition der Produkte...

Page 27: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Lässt sich die Regel zur Matrizenmultiplikation jedoch nicht problemlos anwenden, ist die Operation auch nicht erlaubt:

2maliges Anwenden der Regel erlaubt! Bei vertauschten Faktoren ist die Regel jedoch auch hier nicht mehr anwendbar!

Exkurs Matrizen V: Die wichtigsten Matrizen & Regeln Matrizenmultiplikation II

Page 28: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Gesucht sind in einem ersten Schritt jeweils Matrixgleichungen für die Rotation, Translation und Skalierung unseres Schiffes.

Diese drei Gleichungen werden in einem späteren Schritt zu 1 Matrixgleichung verjüngt, welche alle das Raumschiff betreffenden Transformationsvorgänge in einer einzigen Rechenoperation bewältigt und einen neuberechneten Vektor als Ergebnis liefert.

Eine Matrixgleichung für die Rotationsberechnung könnte wie folgt aussehen:

Die beiden ursprünglichen Gleichungen ... ... werden zu einer Rotationsmatrix

Welttransformation mit Matrizen I– Generierung einer Rotationsmatrix

Page 29: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Um eine Skalierungsmatrix zu generieren, kann man sich eine bereits beschriebene Eigenschaft der Einheitsmatrix zu nutze machen: Die Multiplikation eines Vektors mit einer Einheitsmatrix liefert als Ergebnis immer den Vektor selbst:

Ursache: De facto handelt es sich hierbei um eine „Skalierung“ des Vektors um den Faktor 1. Ergo lässt sich ein Vektor auf diese Weise beliebig skalieren, wenn der Faktor entsprechend verändert wird. So betrachtet, wird die Einheitsmatrix gleichsam zur „Skalierungsmatrix“:

Daraus folgt nachstehende Matrixgleichung zur Skalierung eines Vektors:

Welttransformation mit Matrizen II– Generierung einer Skalierungsmatrix

Dies mag auf den ersten Blick aufwendiger erscheinen, als die bisherige Vorgehensweise zur Skalierung unseres Schiffes, ist als vorbereitender Schritt jedoch notwendig, um später unsere Eierlegendewollmilchsau – die omnipotente Matrixgleichung – generieren zu können

Page 30: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Auf unglaublich verschlungenen, meinen bescheidenen Geist gänzlich sprengenden Pfaden wird aus ...

... über ...

... DAS:

Nur soviel: Aus irgendwelchen Gründen wird hier eine weitere Dimension bzw. Komponente w eingeführt, die „uns nicht weiter stören soll, da ihr Wert immer gleich eins bleibt“...

Na gut, noch mehr: Dies sei notwendig, da die Verschiebungen Δx und Δy andernfalls abhängig von xalt und yalt würden – Δx und Δy jedoch ganz im Gegenteil nicht von diesen abhängig seien. Die Abhängigkeit wiederum finde sich in der Grundlage sowohl der Rotations- als auch der Skalierungsmatrix, nämlich folgender Gleichung, wo eben jene (dort jedoch unproblematische) Abhängigkeit zu xalt und yalt offensichtlich besteht:

Welttransformation mit Matrizen III– Generierung einer Translationsmatrix

Page 31: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Nun können die einzelnen Matrixgleichungen zusammengesetzt werden

1. Zusammenfügen von Skalierungs- & Rotationsmatrix

Die Skalierungsmatrix Die Rotationsmatrix

Kombination & Multiplikation beider Gleichungen:

Erweitern der nun kombinierten Rotations- & Skalierungsmatrix um 1 Dimension (damit das Ganze auch zur sagenumrankten Translationsmatrix konform ist:)

Welttransformation mit Matrizen IV– Generierung einer (ach was sag ich: der) Mega-Matrix

Page 32: 2D-Spielewelten Softwaretechnologie II Christian Daum.

2. Zusammenfügen der kombinierten Rotations- & Skalierungsmatrix mit der Translationsmatrix

Durch schrittweise „Multiplikation“ mit der Translationsmatrix: (Prämisse: Die Translation soll erst nach vollzogener Rotation & Skalierung stattfinden)

Welttransformation mit Matrizen IV– Generierung einer (ach was sag ich: der) Mega-Matrix

Schritt 3 erklärt sich (ggf.) wie folgt:

Auf eine Multiplikation der Rotations- Skalierungsmatrix mit der Translationsmatrix könne verzichtet werden – stattdessen genüge es, lediglich die Verschiebungen Δx und Δy hinzuzuaddieren. Ursprünglich findet sich im Buch folgende „Endgleichung“, die ich allerdings für einen Tippfehler halte, da dort seltsamerweise und auftauchen:

x y

Page 33: 2D-Spielewelten Softwaretechnologie II Christian Daum.

2. Zusammenfügen der kombinierten Rotations- & Skalierungsmatrix mit der Translationsmatrix

Attentione: Die Reihenfolge der Matrizenmultiplikation bestimmt immer die Transformationsreihenfolge des Vektors!

Grund: Die Transformationsmatrizen werden immer von rechts nach links abgearbeitet (zumindest bei Spaltenvektoren) – dies gilt es bei der Aufstellung von Matrizengleichungen zu beachten!

Beispiel für eine Matrixgleichung zur Transformation eines Spaltenvektors: Ein Vektor soll zuerst durch die Matrix1, dann durch die Matrix2 und schließlich durch die Matrix3 transformiert werden – dann muss die zugehörige Formel (in Kurzform) lauten: neuer Vektor = Matrix3 * Matrix2 * Matrix1 * alter Vektor bzw. (auf unser Raumschiff bezogen): neuer Vektor = Translation * Rotation * Skalierung * alter Vektor

Welttransformation mit Matrizen IV– Generierung einer (ach was sag ich: der) Mega-Matrix

Page 34: 2D-Spielewelten Softwaretechnologie II Christian Daum.

3. DirectX-Kompatibilität der Transformationsmatrix gewährleisten (durch Transponierung)

Problem: Unsere Transformationsmatrix für Rotation, Skalierung & Translation des Raumschiffes ist lediglich zu Spaltenvektoren kompatibel –nicht jedoch zu den in DirectX verwendeten Zeilenvektoren!

Lösung: Transponieren („umstellen“) unserer Transformationsmatrix

Beispiel für eine Transponierung:

Welttransformation mit Matrizen IV– Generierung einer (ach was sag ich: der) Mega-Matrix

Diese Matrix soll dergestalt transponiert werden, dass sie auch bei der Multiplikation mit einem Zeilenvektor dasselbe Ergebnis (wiederum in Zeilenform) liefert!

Durch Anwendung der Multiplikationsregel für Matrizen (komponentenweise Zeile mal Spalte) resultiert folgende (transponierte) Matrix als Lösung:

Page 35: 2D-Spielewelten Softwaretechnologie II Christian Daum.

3. DirectX-Kompatibilität der Transformationsmatrix gewährleisten (durch Transponierung)

Erläuterung: Beim direkten Vergleich der beiden Matrizen lässt sich erkennen, dass die Matrixelemente lediglich um die Hauptdiagonale der Matrix gespiegelt wurden, die Hauptdiagonale selbst sich jedoch nicht verändert hat:

Transponierung der Transformationsmatrix Wenn wird diese Erkenntnis auf unsere Transformationsmatrix anwenden, kommen wir zu folgendem, nun DirectX-kompatiblen Ergebnis:

Welttransformation mit Matrizen IV– Generierung einer (ach was sag ich: der) Mega-Matrix

Page 36: 2D-Spielewelten Softwaretechnologie II Christian Daum.

3. DirectX-Kompatibilität der Transformationsmatrix gewährleisten (durch Transponierung)

Reihenfolge der Matrizen ändern (Matrixgleichung zur Transformation eines Zeilenvektors): Der Zeilenvektor steht bei der Multiplikation mit der Transformationsmatrix vor der Matrix – im Gegensatz zum Spaltenvektor, welcher bisher hinter der Transformationsmatrix stand. Daher muss nun auch die Reihenfolge der Matrizen geändert werden:

neuer Vektor = alter Vektor * Matrix1 * Matrix2 * Matrix3

bzw.

neuer Vektor = alter Vektor * Skalierung * Rotation * Translation

Welttransformation mit Matrizen IV– Generierung einer (ach was sag ich: der) Mega-Matrix

Page 37: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Anhang A - Kreisgleichung

Lösungsansatz Kreisgleichung:

-> s entspricht dem Kreisradius bzw. dem Ortsvektor s = 1aU,

-> folglich ist s2 = 1aU2

-> x erstreckt sich von –1aU bis + 1aU,

Umstellen der Gleichung:

-> Durch Umstellen der Gleichung lassen sich nun also jeweils die zugehörigen y-Koordinaten ermitteln

-> Dieser Lösungsansatz ist jedoch zu kompliziert, da sich eigentlich nur der (Dreh-)Winkel

zwischen der y-Achse & dem Ortsvektor der Erde ändert!

-> Ergo (is klar: liegt doch auf der Hand!):

2dimensionale Polarkoordinatendarstellung!

)( 22 xsy

222 yxs

Page 38: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Anhang B - Kreisumfang

Formel Kreisumfang:

Demnach beträgt der Umfang des Einheitskreises:

(entspricht einem Winkel von 360 ° im Bogenmaß)

rU *2 41592654 3,1 Kreiszahl

76,28318530 1*2 U

Page 39: 2D-Spielewelten Softwaretechnologie II Christian Daum.

Anhang C - Normal-/Einheitsvektor

-> Vektor, dessen Betrag = 1 ist (s. Ortsvektor Erde)

-> Die Normierung erfolgt durch Division aller Komponenten eines Vektors mit dessen Betrag: