Was sind Vektoren?
Vektoren sind Sätze von Koordinaten unterschiedlicher Dimension. Jede Koordinate in einem Vektor repräsentiert eine absolute Position in der Richtung des Raums, in dem sich der Vektor befindet.
- Ein 1-D-Vektor wäre {1} . Dies könnte beispielsweise eine Position bei X = 1 sein oder eine Zeit t = 1.
- Ein 2D -Vektor wäre {-4,3} . Dies könnte beispielsweise eine Position bei -4 auf der X-Achse und 3 auf der Y-Achse sein. Es könnte sich auch um die Temperatur (3 Grad) an einer Position (-4 Meter) auf der X-Achse handeln.
- Ein 3D-Vektor wäre {1,2,3} . Dies könnte eine Position in Raum 1 entlang der X-Achse, 2 zurück auf der Y-Achse und 3 nach oben auf der Z-Achse sein. Oder es könnte 1 Rot, 2 Grün und 3 Blau in einer Farbe sein. Oder es könnte zu einem Zeitpunkt T ( {3} ) eine XY-Position ( {1,2 } ) sein.
Beachten Sie, dass wir in allen Fällen den Vektoren für unser Problem eine Bedeutung zugewiesen haben. Während Sie in Spielen häufig Vektoren finden, die für Geometrie verwendet werden, gibt es keinen Grund, warum Sie nichts anderes damit anfangen können.
Warum verwende ich Vektoren?
Erstens, die Sie nie haben Vektoren zu verwenden. Solange Sie x und y oder die Koordinaten, die Ihnen wichtig sind, im Auge behalten, geht es Ihnen in gewisser Weise gut.
Der Vorteil bei der Verwendung von Vektoren besteht jedoch darin, dass sie ordentlich Dinge wie Richtung und Position darstellen und auch mehrere mathematische Operationen definiert haben, die Ihnen das Leben erleichtern.
Betrachten Sie für ein einfaches Beispiel das Skalarprodukt .
Angenommen, Sie haben ein Radarsystem in einem Spiel von oben nach unten. Jeder Feind, der im Radarsektor auftaucht (ein kuchenförmiger Keil in 2D), sollte einen kleinen roten Punkt auf Ihrem Bildschirm haben. Sie müssen also herausfinden, welche Feinde sich in Ihrem Radarbereich befinden.
Sie können testen, ob sich die Feinde in einem Dreieck befinden. Sie können auch testen, ob sich die Feinde im Schnittpunkt der beiden Halbräume der Ebenen / Linien befinden, die die beiden Seiten des Radarsektors definieren.
Oder Sie können einfach ein Skalarprodukt verwenden , um die Prüfung durchzuführen. Hier ist wie:
- Erstellen Sie einen Vektor, der von der Mitte des Radars zur "Vorderseite des Radars" zeigt. Normalisiere es.
- Erstellen Sie einen Vektor, der von der Mitte des Radars aus in Richtung des Objekts geht, dessen Radarsichtbarkeit überprüft werden soll. Normalisiere es.
- Nehmen Sie das Skalarprodukt der beiden normierten Vektoren.
- Nehmen Sie den Arkuscosinus dieses Produkts und prüfen Sie, ob er kleiner als der halbe Winkel der Radarbreite ist. Wenn dies der Fall ist, ziehen Sie einen Punkt.
Dies ist sehr praktisch und ermöglicht es Ihnen, Radare, die in unterschiedliche Richtungen zeigen (ändern Sie einfach den Vorwärtsvektor) und unterschiedliche Breiten (ändern Sie einfach den Radarbreitenwinkel), auf einfache Weise zu verwenden. In diesen Fällen können Sie auch denselben Code wiederverwenden !
Warum verwende ich sonst Vektoren?
Wenn Sie in 2D arbeiten, können Sie komplexe Effekte und Bewegungen (Drehen, Skalieren usw.) am besten mithilfe eines Szenendiagramms erzielen. Ein Planet hat ein umkreistes Schiff, das Schiff hat eine umkreiste Drohne. Die Berechnung dafür ohne die Verwendung von Vektormathematik ist wirklich sehr, sehr hässlich.
In der Vektormathematik stellen wir jeweils einen Punkt und eine 3x3-Transformationsmatrix dar. Der Planet nutzt seine Transformation, das Schiff nutzt seine Transformation und die Transformation des Planeten, und die Drohne nutzt seine Transformation und die Transformation des Schiffes und die Transformation des Planeten.
Wenn sich der Planet bewegt, ändert man seine Transformation und das Schiff und die Drohne werden automatisch "kostenlos" positioniert. Viel sauberer Code.
Immer noch nicht überzeugt.
Vektoren sind auch die native Darstellung für Position, Geometrie und Bewegung, die von fast allen Grafikbibliotheken verwendet wird - und sicherlich auch von OpenGL und DirectX. Sie werden wahrscheinlich nicht davonkommen, ohne sie zu benutzen.
Fazit
Vektoren sind ein leistungsstarkes Werkzeug zum Schreiben von klarem Code, mit dem geometrische Probleme sauber und elegant gelöst werden können.