Class Vector
java.lang.Object
de.pirckheimer_gymnasium.engine_pi.Vector
- All Implemented Interfaces:
Cloneable
Beschreibt einen zweidimensionalen Vektor auf der Zeichenebene. Diese
Klasse wird für alle Positions- und Richtungsangaben genutzt.
- Author:
- Michael Andonie
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final VectorKonstante für eine einfache Verschiebung nach unten (0, 1).static final VectorKonstante für eine einfache Verschiebung nach links (-1, 0).static final VectorKonstante für einen „bewegungslosen“ Vektor (0, 0).static final VectorKonstante für eine einfache Verschiebung nach rechts (1, 0).static final VectorKonstante für eine einfache Verschiebung nach oben (0, -1). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionadd(double x, double y) Berechnet die effektive Bewegung, die dieser Vektor und ein weiterer zusammen ausüben.Berechnet die effektive Bewegung, die dieser Vector und ein weiterer zusammen ausüben.clone()divide(double divisor) Teilt die effektive Länge des Vektors durch eine Zahl und kürzt dadurch seine Effektivität.booleanPrüft, ob ein beliebiges Objekt gleich diesem Vektor ist.doubleBerechnet den Winkel zwischen diesem Vektor und einem weiteren.Berechnet die Richtung des Vektors, in die er wirkt.getDistance(Vector vector) Gibt den Vektor an, der den Punkt, den dieser Vektor beschreibt, zu dem Punkt verschieben würde, den ein weiterer Vektor beschreibt.doubleGibt die Länge des Vektors aus.doubleGibt die Manhattan-Länge des Vektors zurück.doublegetScalarProduct(Vector vector) Berechnet das Skalarprodukt von diesem Vektor mit einem weiteren.doublegetX()Gibt den Bewegungsanteil inx-Richtung zurück.doublegetY()Gibt den Bewegungsanteil iny-Richtung zurück.booleanGibt zurück, ob dieser Vektor echt ganzzahlig ist, also ob seine tatsächlichen Delta-Werte beide Ganzzahlen sind.booleanisNaN()booleanisNull()Berechnet, ob dieser Vektor keine Wirkung hat.multiply(double factor) Multipliziert die effektiven Längen beider Anteile des Vektors (xundy) mit einem festen Faktor.multiplyX(double factor) Multipliziert die effektive Länge des X-Anteils des Vektors mit einem festen Faktor.multiplyY(double factor) Multipliziert die effektive Länge des X-Anteils des Vektors mit einem festen Faktor.negate()Berechnet die Gegenrichtung des Vektors.negateX()Berechnet die Gegenrichtung des Vektors in X-Richtung.negateY()Berechnet die Gegenrichtung des Vektors in Y-Richtung.Gibt eine Normierung des Vektors aus.static Vectorof(org.jbox2d.common.Vec2 vector) static VectorofAngle(double angle) Berechnet anhand eines Winkels, der in Grad angegeben ist, den entsprechenden Vektor.rotate(double angle) Berechnet eine rotierte Version.subtract(double x, double y) Berechnet die Differenz zwischen diesem und einem weiteren Vektor.Berechnet die Differenz zwischen diesem und einem weiteren Vektor.toString()Gibt die String-Repräsentation dieses Objektes aus.org.jbox2d.common.Vec2toVec2()static Vectorv(double x, double y) Erzeugt einen neuen Vektor.static Vectorvector(double x, double y) Erzeugt einen neuen Vektor.
-
Field Details
-
NULL
Konstante für einen „bewegungslosen“ Vektor (0, 0). -
RIGHT
Konstante für eine einfache Verschiebung nach rechts (1, 0). -
LEFT
Konstante für eine einfache Verschiebung nach links (-1, 0). -
UP
Konstante für eine einfache Verschiebung nach oben (0, -1). -
DOWN
Konstante für eine einfache Verschiebung nach unten (0, 1).
-
-
Constructor Details
-
Vector
Erzeugt einen neuen Vektor.- Parameters:
x- Der Bewegungsanteil inx-Richtung.y- Der Bewegungsanteil iny-Richtung.
-
Vector
Erzeugt einen Vektor als Bewegung von einem Ausgangspunkt zu einem Zielpunkt.- Parameters:
start- Der Ausgangspunkt.end- Der Zielpunkt.
-
-
Method Details
-
of
-
ofAngle
Berechnet anhand eines Winkels, der in Grad angegeben ist, den entsprechenden Vektor.- Der Vektor für 0 Grad ist [x = 1; y = 0]
- Der Vektor für 90 Grad ist [x = 0; y = 1]
- Der Vektor für 180 Grad ist [x = -1; y = 0]
- Der Vektor für 270 Grad ist [x = 0; y = -1]
- Der Vektor für 360 Grad ist [x = 1; y = 0]
- Parameters:
angle- Der Winkel in Grad.- Returns:
- Der Vektor, der sich aus einem Winkel berechnet.
-
getX
Gibt den Bewegungsanteil inx-Richtung zurück.- Returns:
- Der Bewegungsanteil in
x-Richtung.
-
getY
Gibt den Bewegungsanteil iny-Richtung zurück.- Returns:
- Der Bewegungsanteil in
y-Richtung.
-
normalize
Gibt eine Normierung des Vektors aus. Dies ist ein Vektor, der- in die selbe Richtung wie der ursprüngliche Vektor zeigt.
- eine Länge von (möglichst) exakt 1 hat.
- Returns:
- Normierter Vektor zu diesem Vektor.
-
divide
Teilt die effektive Länge des Vektors durch eine Zahl und kürzt dadurch seine Effektivität.- Parameters:
divisor- Hierdurch wird die Länge des Vektors auf der Zeichenebene geteilt.- Returns:
- Das Vektor-Objekt, das eine Bewegung in dieselbe Richtung beschreibt, allerdings in der Länge gekürzt um den angegebenen Divisor.
- Throws:
ArithmeticException- Fallsdivisor0ist.- See Also:
-
getLength
Gibt die Länge des Vektors aus.- Returns:
- Die Länge des Vektors.
-
negate
Berechnet die Gegenrichtung des Vektors.- Returns:
- Ein neues Vektor-Objekt, das genau die Gegenbewegung zu dem eigenen beschreibt.
-
negateX
Berechnet die Gegenrichtung des Vektors in X-Richtung.- Returns:
- Ein neues Vektor-Objekt, das genau die Gegenbewegung zu dem eigenen beschreibt.
-
negateY
Berechnet die Gegenrichtung des Vektors in Y-Richtung.- Returns:
- Ein neuer Vektor, der genau die Gegenbewegung zum eigenen Vektor beschreibt.
-
add
Berechnet die effektive Bewegung, die dieser Vektor und ein weiterer zusammen ausüben.- Parameters:
x- Die Änderung in X-Richtung.y- Die Änderung in Y-Richtung.- Returns:
- Ein neues Vektor-Objekt, das die Summe der beiden ursprünglichen Bewegungen darstellt.
-
add
Berechnet die effektive Bewegung, die dieser Vector und ein weiterer zusammen ausüben.- Parameters:
vector- Ein zweiter Vektor.- Returns:
- Ein neues Vektor-Objekt, das die Summe der beiden ursprünglichen Bewegungen darstellt.
-
subtract
Berechnet die Differenz zwischen diesem und einem weiteren Vektor.- Parameters:
x- Änderung in X-Richtungy- Änderung in Y-Richtung- Returns:
- Die Differenz der beiden Vektoren (
"this - v")
-
subtract
Berechnet die Differenz zwischen diesem und einem weiteren Vektor.- Parameters:
vector- zweiter Vektor- Returns:
- Die Differenz der beiden Vektoren (
"this - v")
-
rotate
Berechnet eine rotierte Version.- Parameters:
angle- Der Winkel der Rotation in Grad.- Returns:
- Ein neues Vektor-Objekt, das entsprechend der Gradzahl rotiert wurde.
-
getDistance
Gibt den Vektor an, der den Punkt, den dieser Vektor beschreibt, zu dem Punkt verschieben würde, den ein weiterer Vektor beschreibt.- Parameters:
vector- Ein weiterer Vektor.- Returns:
- Der Vektor, der
(this.x|this.y)verschieben würde zu(v.x|v.y).
-
multiply
Multipliziert die effektiven Längen beider Anteile des Vektors (xundy) mit einem festen Faktor.Dadurch entsteht ein neuer Vektor mit anderen Werten, welcher zurückgegeben wird.
- Parameters:
factor- Der Faktor, mit dem diex- undy-Werte des Vektors multipliziert werden- Returns:
- Der Vektor mit den multiplizierten Werten.
- See Also:
-
multiplyX
Multipliziert die effektive Länge des X-Anteils des Vektors mit einem festen Faktor.Dadurch entsteht ein neuer Vektor mit anderen Werten, welcher zurückgegeben wird.
- Parameters:
factor- Der Faktor, mit dem der x-Wert des Vektors multipliziert wird.- Returns:
- Der Vektor mit den multiplizierten Werten.
- See Also:
-
multiplyY
Multipliziert die effektive Länge des X-Anteils des Vektors mit einem festen Faktor.Dadurch entsteht ein neuer Vektor mit anderen Werten, welcher zurückgegeben wird.
- Parameters:
factor- Der Faktor, mit dem der x-Wert des Vektors multipliziert wird.- Returns:
- Der Vektor mit den multiplizierten Werten.
- See Also:
-
getScalarProduct
Berechnet das Skalarprodukt von diesem Vektor mit einem weiteren. Das Skalarprodukt für zweidimensionale Vektoren ist:(a, b) o (c, d) = a * b + c * d- Parameters:
vector- zweiter Vektor- Returns:
- Skalarprodukt dieser Vektoren mit dem Vektor
v.
-
isNull
Berechnet, ob dieser Vektor keine Wirkung hat. Dies ist der Fall, wenn beide Komponenten (xundy) 0 sind.- Returns:
true, wenn dieser keine Auswirkungen macht, sonstfalse.
-
isIntegral
Gibt zurück, ob dieser Vektor echt ganzzahlig ist, also ob seine tatsächlichen Delta-Werte beide Ganzzahlen sind.- Returns:
true, wenn beide Delta-Werte dieses Punktes ganzzahlig sind, sonstfalse.
-
getDirection
Berechnet die Richtung des Vektors, in die er wirkt.- Returns:
- Der Wert der Konstanten, die diese Bewegung widerspiegelt.
-
equals
Prüft, ob ein beliebiges Objekt gleich diesem Vektor ist.
Zwei Vektoren gelten als gleich, wennxundyder beiden Vektoren übereinstimmen. -
clone
- Overrides:
clonein classObject- Throws:
CloneNotSupportedException
-
toString
Gibt die String-Repräsentation dieses Objektes aus.Diese Methode sollte nur zu Debugging-Zwecken benutzt werden.
-
getManhattanLength
Gibt die Manhattan-Länge des Vektors zurück. Diese ist für v=(a, b) definiert als a+b.- Returns:
- Die Summe von delta X und delta Y des Vektors.
-
getAngle
Berechnet den Winkel zwischen diesem Vektor und einem weiteren. Hierzu wird diese Formel verwendet:
cos t = [a o b] / [|a| * |b|]
- cos ist der Kosinus
- t ist der gesuchte Winkel
- a und b sind die Vektoren
- |a| ist die Länge des Vektors a
- Parameters:
other- Ein zweiter Vektor.- Returns:
- Der Winkel zwischen diesem Vektor und dem zweiten. Ist zwischen 0 und 180.
-
toVec2
-
isNaN
-
vector
Erzeugt einen neuen Vektor.Diese statische Methode kann dazu benutzt werden, um über einen statischen Import dieser Methode
import static de.pirckheimer_gymnasium.engine_pi.Vector.vector;mit etwas weniger Schreibarbeit einen neuen Vektor zu erzeugen. Anstatt
new Vector(1, 2);kann dann
vector(1, 2);geschrieben werden.
- Parameters:
x- Der Bewegungsanteil inx-Richtung.y- Der Bewegungsanteil iny-Richtung.
-
v
Erzeugt einen neuen Vektor.Diese statische Methode kann dazu benutzt werden, um über einen statischen Import dieser Methode
import static de.pirckheimer_gymnasium.engine_pi.Vector.v;mit etwas weniger Schreibarbeit einen neuen Vektor zu erzeugen. Anstatt
new Vector(1, 2);kann dann
v(1, 2);geschrieben werden.
- Parameters:
x- Der Bewegungsanteil inx-Richtung.y- Der Bewegungsanteil iny-Richtung.
-