Verzeihen Sie mir, wenn dies keine echte Frage ist, aber ich bin wirklich verwirrt.
Ich höre ständig andere Spieleentwickler, die darüber sprechen, wie nützlich die Verwendung von Vektoren ist, aber auch, wie sich jeder von der Vektormathematik einschüchtern lässt und Vektoren entmutigend wirken können. Ich bin noch nie dazu gekommen, etwas über sie zu lernen.
Also habe ich endlich mal bei Wikipedia nach Vector gesucht und war überrascht. Sofern ich mich nicht irre, ist ein Vektor (der Einfachheit halber heißt er 2D) nur eine x- und eine y-Koordinate. Wenn ich falsch verstanden habe, korrigieren Sie mich bitte.
Hier ist meine Frage: Bedeutet das nicht, dass jede Darstellung von zwei (oder dreidimensionalen) Koordinaten ein Vektor ist? Wenn ja, dann sind Vektoren und Koordinaten dasselbe. Und es ist so gut wie unmöglich, ein Spiel ohne die Verwendung von Koordinaten zu erstellen. Wie verwirren Vektoren jemanden oder sind sie neu für jemanden, der bereits umfangreiche Spielprogramme erstellt hat?
Dies ist etwas, über das ich etwas Aufklärung gebrauchen könnte. Jede Hilfe wird geschätzt.
quelle
Antworten:
Lassen Sie sich nicht von einem Mathematik-Major dazu bringen, Vektoren-Punkte oder -Koordinaten zu nennen!
Ein 2D-Vektor hat eine x- und eine y- Komponente , keine Koordinate. Vektoren definieren keine Position, sie definieren eine Richtung und eine Größe.
Ich kann dir nicht sagen, warum die Leute von ihnen eingeschüchtert werden, wahrscheinlich aus demselben Grund, aus dem die Leute im Allgemeinen von Mathematik eingeschüchtert werden, weil alle sagen, es sei schwer, bevor sie etwas darüber wissen!
Vektoren und Koordinaten sind nicht dasselbe. Sie sehen zwar ähnlich aus, aber ihre Verwendung ist sehr unterschiedlich.
Koordinaten definieren eine Position in der Welt. Vektoren definieren eine Richtung und Größe. Die beiden werden oft zusammen verwendet. Als Beispiel:
Ein Charakter hat eine Position und eine Geschwindigkeit. Die Position ist eine Koordinate und die Geschwindigkeit ist ein Vektor. Das Hinzufügen der Geschwindigkeit zur Position verschiebt das Zeichen in Richtung des Vektors in einem Abstand, der durch die Größe des Vektors definiert wird (beachten Sie, dass die Größe des Vektors die Geschwindigkeit ist, sodass wir eine Richtung und eine Geschwindigkeit erhalten).
Oder in diesem Beispiel:
Die beiden Zeichen haben Positionen und der Laserschuss ist ein Vektor. Ein Vektor zwischen den beiden Positionen ist (3,1). Das heißt, es bewegt sich +3 entlang der X-Achse und +1 entlang der Y-Achse. Wo die Größe mit Sqrt ((X X) + (Y Y)) gefunden werden kann.
Einen guten Überblick über Vektormathematik finden Sie im Wolfire-Blog
quelle
Ich denke, der Einschüchterungsfaktor kann auftreten, wenn Sie kompliziertere Operationen wie Normalisierung, Punkt- und Kreuzprodukte ausführen und mehrere Koordinatensysteme mit Matrizen verwenden, um zwischen diesen zu transformieren. Diese sind zunächst nicht unbedingt leicht zu verstehen, selbst wenn Sie einen starken Geometrie- und Algebra-Hintergrund haben.
Zumindest in den USA sind die Leute, die die typische High-School-Mathe-Sequenz durchlaufen haben, es gewohnt, über Geometrie in Bezug auf Linien, Steigungen, Winkel usw. nachzudenken. Sie müssen diese Dinge bis zu einem gewissen Grad verlernen und lernen Denken Sie stattdessen in Vektoren und Matrizen darüber nach. Es ist nicht so, dass die Konzepte der linearen Algebra eine solche Strecke sind, sondern dass sie eine etwas andere Menge von Konzepten sind als diejenigen, die in der klassischen Geometrie verwendet werden und die Menschen wahrscheinlich in der Schule gelernt haben.
Übrigens liegt der Unterschied zwischen Vektoren und Punkten in den Operationen, die Sie an ihnen ausführen können. Obwohl beide (in einem bestimmten Koordinatensystem) durch eine Liste von Komponenten dargestellt werden und daher "gleich" aussehen, sind die zulässigen Vorgänge nicht gleich. Sie können beispielsweise zwei Vektoren hinzufügen oder einen Vektor mit einem Skalar multiplizieren. Mit Punkten geht das nicht - oder zumindest macht das keinen Sinn. Sie können jedoch zwei Punkte subtrahieren, und das Ergebnis ist ein Vektor von einem Punkt zum anderen. Sie können einem Vektor auch einen Punkt hinzufügen, um einen neuen Punkt zu erhalten.
Punkte und Vektoren verhalten sich auch in Bezug auf Transformationen unterschiedlich. Punkte unterliegen nämlich der Translation, Vektoren hingegen nicht. Betrachten Sie das Beispiel eines Objekts, das sich mit einer Position (Punkt) und einer Geschwindigkeit (Vektor) bewegt. Wenn Sie das Objekt an einen anderen Ort verschieben, ändern Sie seine Position, aber nicht seine Geschwindigkeit.
Tatsächlich gibt es nicht nur Vektoren, um diese Argumentation zu unterstützen. Es gibt andere Entitäten wie Covectors und Bivectors , die in Bezug auf eine Liste von Komponenten in einem Koordinatensystem ebenfalls wie ein Vektor "aussehen", sich jedoch in Bezug auf die verfügbaren Operationen und die Art und Weise, wie sie auf Transformationen reagieren, unterschiedlich verhalten. Diese gehören alle zu einer mathematischen Disziplin namens Grassmann-Algebra . Darüber hinaus kann man noch allgemeiner sein und Tensoralgebra betrachten . Dies ist jedoch fortgeschrittenes Zeug.
quelle
Vektoren sind wirklich nicht so schlimm. Es gibt nur ein bisschen Mathe, mit dem die Leute nicht vertraut sind.
In erster Linie repräsentiert ein Vektor keine Position im Raum. Dies ist konzeptionell sehr wichtig. Ein Vektor repräsentiert eine Richtung wie 'Nord' und eine Größe. Auf einer Karte mit normalen mathematischen XY-Koordinaten ist "Nord" der Vektor (0,1) (oben auf der Y-Achse). Dies sollte nicht mit der Position (0,1) verwechselt werden, die eine Einheit über der Position liegt, an der Sie den Ursprung setzen. Ein Vektor ist eine Richtung und eine Größe .
Verschiebung (Bewegung) ist ein Vektor (wie zwei Einheiten nach oben und eine Einheit nach rechts bewegen), Position ist nicht.
Vektoren sind für sich genommen nicht das, womit Menschen ein Problem haben. Normalerweise sind es Matrizen und Operationen auf Vektoren.
Wenn Sie beispielsweise einen Vektor mit einer speziellen Matrix multiplizieren, die als "Rotationsmatrix" bezeichnet wird, wird der Vektor um den in der Matrix angegebenen Betrag gedreht. Darüber hinaus haben einige Personen Probleme mit der Matrixmultiplikation. Schlagen Sie nach, wenn Sie damit nicht vertraut sind.
Außerdem können Sie diese Matrizen (oder Operationen) zusammen stapeln. Drehen Sie um 90 Grad um die X-Achse und dann um 90 Grad um die Y-Achse. Wenn wir die erste Matrix M und die zweite Matrix N nennen, wäre die Operation v * M * N. Die Matrixmultiplikation ist jedoch nicht kommutativ, sodass sie nicht mit v * N * M identisch ist.
In der Grafikprogrammierung führen Sie regelmäßig erheblich kompliziertere Operationen an Vektoren und anderen Matrizen durch. Transformationen für FoV und das Einfügen Ihrer Koordinaten in den Bildschirmbereich usw. Es ist wirklich nicht so schlimm, aber für neue Leute kann es einschüchternd sein.
quelle