B
Beni
Gast
Vektoren & Punkte
Praktisch in jedem Spiel muss man sich mit Vektoren und Punkten herumschlagen. Eine gute Gelegenheit die wichtigsten Begriffe und Formeln kennenzulernen (ich versuch hier wirklich nur das aufzulisten, was man benötigt, oder was das Leben erleichtert).
Dabei soll sich dieser Text auf 2- und 3-dimensionale Räume beschränken, und es soll auch nur immer ein rechtwinkliges, normiertes Koordinatensystem benutzt werden (einige der Formeln die hier gezeigt werden, gelten auch nur unter diesen Bedingungen).
P.S. Ich mache im Text immer ein Strich unter die Vektoren und Punkte damit man sie auch erkennt. Alles was kein Strich hat, ist auch kein Vektor oder Punkt.
Punkte
Punkte sind ganz einfach eine Angabe "soviele Schritte in x-Richtung, soviele in y-Richtung, dann bist Du am Ziel." Punkte sind also einfach ein Zahlenpaar (oder ein Zahlentrippel im 3D-Fall), und werdem meist so geschrieben:
Natürlich gibt es auch Punkte die keine ganzen Zahlen als Koordinaten haben, zum Beispiel (1.235, 67.89).
Vektoren
Vektoren kann man auch mit "Richtung" übersetzen. Auch sie sind Zahlenpaare (Zahlentrippel), und werden genau gleich wie Punkte aufgeschrieben:
Einige Vektoren:
Das hier sind dieselben Vektoren, da es ja nur um die Richtung, und nicht den Anfang geht:
Vektoren kann man addieren, subtrahieren und skalieren:
Die Addition ist denkbar einfach:
Die Subtraktion ist genau gleich:
Auch das Skalieren (bzw. Multiplizieren) ist kein grosses Problem:
Vektortypen
Manchmal wird zwischen 2 Arten Vektoren unterschieden: Richtungsvektoren und Ortsvektoren.
Einige Formeln & Definitionen zu Vektoren
Das Skalarprodukt ist das Resultat der (skalaren) Multiplikation von Vektoren.
Dazu werden die Komponenten paarweise multipliziert, und danach addiert:
Genau gleich in 3 Dimensionen:
[*]Der Winkel
Der Winkel zwischen zwei Vektoren ist gegeben durch:
[*]Parallel / Antiparallel
Zwei Vektoren sind parallel, wenn sie in dieselbe Richtung zeigen, aber unterschiedlich lang sind:
Falls der Wert t < 0 ist, spricht man auch von antiparallel.
Falls t = 0 ist, ist entweder a oder b der Nullvektor. Natürlich ist der Nullvektor parallel zu allen Vektoren, aber er ist auch gleichzeitig normal zu allen Vektoren. Seltsame Sache, aber es funktioniert.
[*]Das Vektorprodukt (Kreuzprodukt)
Das Vektorprodukt kann nur in 3 Dimensionen berechnet werden. Das Resultat dieser Multiplikation zweier Vektoren ist ein neuer Vektor, der normal zu den beiden Originalen ist.
Das Vektorprodukt (mit dem Zeichen "x")
Und es gilt:
Falls die beiden Vektor parallel oder antiparallel sind, ist die Länge des Vektorproduktes = 0, und damit ist es sicher normal zu den beiden Vektoren, auch wenn es keine eindeutige Richtung hat.
[/list:u:fc923fe8f9]
Philosophie: Der Unterschied zwischen Punkt und Vektor?
Oft sagt man: der Punkt ist ein Gebilde, das einen festen Platz im Raum hat, der Vektor ist eine Richtung.
Diese Trennung kann man machen (und sie ist meistens auch sinnvoll), aber man sollte daran denken, dass Punkt und Vektor eigentlich beide nur eine geordnete Menge von Zahlen sind.
Von diesem Standpunkt gesehen, kann man aber sagen, dass Punkt und Vektor zwei Wörter für ein und dasselbe sind, und man einen Punkt durch einen Vektor (und umgekehrt) vertauschen kann, ohne dass sich das Ergebnis der Gleichung verändert.
Nur die fixe Vorstellung, Punkte und Vektoren als geometrische Gebilde zu sehen, kann einem am auffinden eleganter und schneller Lösungen hindern!
Praktisch in jedem Spiel muss man sich mit Vektoren und Punkten herumschlagen. Eine gute Gelegenheit die wichtigsten Begriffe und Formeln kennenzulernen (ich versuch hier wirklich nur das aufzulisten, was man benötigt, oder was das Leben erleichtert).
Dabei soll sich dieser Text auf 2- und 3-dimensionale Räume beschränken, und es soll auch nur immer ein rechtwinkliges, normiertes Koordinatensystem benutzt werden (einige der Formeln die hier gezeigt werden, gelten auch nur unter diesen Bedingungen).
P.S. Ich mache im Text immer ein Strich unter die Vektoren und Punkte damit man sie auch erkennt. Alles was kein Strich hat, ist auch kein Vektor oder Punkt.
Punkte
Punkte sind ganz einfach eine Angabe "soviele Schritte in x-Richtung, soviele in y-Richtung, dann bist Du am Ziel." Punkte sind also einfach ein Zahlenpaar (oder ein Zahlentrippel im 3D-Fall), und werdem meist so geschrieben:
wobei x, y, z irgendwelche Zahlen sein können (man nennt x, y und z auch "Koordinaten", in seltenen Fällen "Komponenten")im 2D-Fall: (x, y)
im 3D-Fall: (x, y, z)
Natürlich gibt es auch Punkte die keine ganzen Zahlen als Koordinaten haben, zum Beispiel (1.235, 67.89).
Vektoren
Vektoren kann man auch mit "Richtung" übersetzen. Auch sie sind Zahlenpaare (Zahlentrippel), und werden genau gleich wie Punkte aufgeschrieben:
wobei x, y, z irgendwelche Zahlen (auch 0) sein können (man nennt x, y und z auch "Komponenten")im 2D-Fall: (x, y)
im 3D-Fall: (x, y, z)
Einige Vektoren:
Das hier sind dieselben Vektoren, da es ja nur um die Richtung, und nicht den Anfang geht:
Vektoren kann man addieren, subtrahieren und skalieren:
Die Addition ist denkbar einfach:
a + b =
(ax, ay) + (bx, by) =
(ax + bx, ay + by)
Die Subtraktion ist genau gleich:
a - b =
(ax, ay) - (bx, by) =
(ax - bx, ay - by)
Auch das Skalieren (bzw. Multiplizieren) ist kein grosses Problem:
c*a =
c * (ax, ay) =
(c*ax, c*ay)
Vektortypen
Manchmal wird zwischen 2 Arten Vektoren unterschieden: Richtungsvektoren und Ortsvektoren.
- Richtungsvektoren: sie beschreiben eine Richtung. So wie "Osten" keinen Anfangspunkt hat, haben auch Richtungsvektoren keinen Anfangspunkt.
- Ortsvektoren: sind eng mit Punkten verwandt. Sie sind an einem Punkt (meist dem Nullpunkt) "befestigt", und beschreiben selbst einen Punkt, der gegenüber dem Ursprung (des Ortsvektors) verschoben ist.
Einige Formeln & Definitionen zu Vektoren
- Der Nullvektor
Der Vektor (0, 0) (oder (0, 0, 0)) heisst Nullvektor. Er hat einige spezielle Eigenschaften, die jeweils "vor Ort" gezeigt werden. - Die Länge
Die Länge eines Vektors ist definiert als:
a = (x, y)
|a| = sqrt( x*x + y*y ) //sqrt bedeutet einfach Wurzel
(Die Striche || bedeuten, dass die Länge des Vektors gemeint ist)
Mit der Methode Math.hypot lässt sich die Länge in Java bequem berechnen.
Oder für 3D:
b = (x, y, z)
|b| = sqrt( x*x + y*y + z*z )
[list:fc923fe8f9] - Ein Vektor mit der Länge 1 wird "normierter Vektor" oder "Einheitsvektor" genannt.
Es gibt zu jedem Vektor (Ausnahme: Nullvektor) einen Einheitsvektor, der genau in dieselbe Richtung zeigt. Und zwar ist das:
a = (x, y, z)
ea = a / |a| - Der Nullvektor 0 hat die Länge 0, alle anderen Vektoren haben eine Länge > 0.
Das Skalarprodukt ist das Resultat der (skalaren) Multiplikation von Vektoren.
Dazu werden die Komponenten paarweise multipliziert, und danach addiert:
a = (ax, ay), b = (bx, by)
s = a*b = (ax, ay)*(bx, by) = ax*bx + ay*by
Genau gleich in 3 Dimensionen:
a = (ax, ay, az), b = (bx, by, bz)
s = a*b = (ax, ay, az)*(bx, by, bz) = ax*bx + ay*by + az*bz
- Es gilt:
|a| * |a| = a * a - Der Nullvektor wird seinem Namen gerecht:
0 * v = (0, 0) * (x, y) = 0 + 0 = 0 - Es gibt eine andere Schreibweise für das Skalarprodukt, welche auch oft zu finden ist:
a * b = <a, b>
[*]Der Winkel
Der Winkel zwischen zwei Vektoren ist gegeben durch:
cos w = ( a * b )/( |a| * |b| ) // w ist der Winkel, "cos" ist die Winkelfunktion "Cosinus"
- Rechnet man nur mit Einheitsvektoren, kann man das Teilen weglassen, denn:
( a * b )/( |a| * |b| ) = ( a / |a| ) * ( b / |b| ) // und da |a| = |b| = 1... - Das Skalarprodukt von zwei Vektoren die normal (auch "senkrecht" genannt) zueinander sind, ist 0.
- Da das Skalarprodukt des Nullvektors mit irgendeinem anderen Vektor 0 gibt, muss der Nullvektor normal zu jedem anderen Vektor sein. Da man dem Nullvektor keine Richtung zuordnen kann, ist das aber noch akzeptabel.
- Der Normalvektor zu einem beliebigen Vektor lässt sich folgendermassen berechnen (nur in 2D):
a = (ax, ay)
b = (ay, -ax)
oder
b = (ay, -ax) * t // wobei t ein beliebig wählbarer Wert ist. t skaliert b einfach, das ändert aber nichts am Winkel
- Durch Umkehren der Winkelgleichung kann man den Innenwinkel (derjenige Winkel der kleiner oder gleich 90° ist) zweier Vektoren berechnen:
w1 = acos( (a * b) / (|a| * |b|) ) // wobei acos die Funktion Arcus Cosinus meint - Der Aussenwinkel (der Winkel der grösser oder gleich pi/2 ist), ist dann:
w2 = 2*pi - w1
[*]Parallel / Antiparallel
Zwei Vektoren sind parallel, wenn sie in dieselbe Richtung zeigen, aber unterschiedlich lang sind:
a = (ax, ay), b = (bx, by)
a = t * b
//oder auch:
ax = t*bx
ay = t*by
Falls der Wert t < 0 ist, spricht man auch von antiparallel.
Falls t = 0 ist, ist entweder a oder b der Nullvektor. Natürlich ist der Nullvektor parallel zu allen Vektoren, aber er ist auch gleichzeitig normal zu allen Vektoren. Seltsame Sache, aber es funktioniert.
[*]Das Vektorprodukt (Kreuzprodukt)
Das Vektorprodukt kann nur in 3 Dimensionen berechnet werden. Das Resultat dieser Multiplikation zweier Vektoren ist ein neuer Vektor, der normal zu den beiden Originalen ist.
Das Vektorprodukt (mit dem Zeichen "x")
c = a x b
cx = ay*bz - az*by
cy = az*bx - ax*bz
cz = ax*by - ay*bx
Und es gilt:
Der Vektor c ist also normal zu den Vektor a und b.a * c = 0
b * c = 0
Falls die beiden Vektor parallel oder antiparallel sind, ist die Länge des Vektorproduktes = 0, und damit ist es sicher normal zu den beiden Vektoren, auch wenn es keine eindeutige Richtung hat.
[/list:u:fc923fe8f9]
Philosophie: Der Unterschied zwischen Punkt und Vektor?
Oft sagt man: der Punkt ist ein Gebilde, das einen festen Platz im Raum hat, der Vektor ist eine Richtung.
Diese Trennung kann man machen (und sie ist meistens auch sinnvoll), aber man sollte daran denken, dass Punkt und Vektor eigentlich beide nur eine geordnete Menge von Zahlen sind.
Von diesem Standpunkt gesehen, kann man aber sagen, dass Punkt und Vektor zwei Wörter für ein und dasselbe sind, und man einen Punkt durch einen Vektor (und umgekehrt) vertauschen kann, ohne dass sich das Ergebnis der Gleichung verändert.
Nur die fixe Vorstellung, Punkte und Vektoren als geometrische Gebilde zu sehen, kann einem am auffinden eleganter und schneller Lösungen hindern!