Class Vector
- All Implemented Interfaces:
Serializable,Cloneable
Ein Vektor besteht aus zwei Komponenten x und y. Die
Vector Klasse unterstützt alle wesentlichen Vektoroperationen wie
Skalierung, Addition oder
Längen- und Abstandsberechnung.
Jede Operation, für die ein Parameter (ein anderer Vektor oder ein Skalar)
benötigt werden, gibt es in zwei Varianten: als Objektmethode, die das
Vektorobjekt selbst verändert und als Klassenmethode, die einen neuen Vektor
erzeugt. Die Objektmethoden unterstützen
method chaining
und geben jeweils das Vektorobjekt selbst zurück.
Außerdem werden eine Reihe von Hilfsmethoden implementiert, um
Zufallsvektoren zu erzeugen, oder die
Mausposition als Vektorobjekt zu holen.
Der Vektor der Zeichenmaschine erweitert die Klasse Point2D und lässt
sich dadurch einfach mit den Klassen des java.awt Pakets benutzen.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class java.awt.geom.Point2D
Point2D.Double, Point2D.Float -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final VectorVektor der OrdinatenachseVector(0.0, 1.0)[unten]static final VectorVektor der negativen AbszissenachseVector(-1.0, 0.0)[links]static final VectorVektor der AbszissenachseVector(1.0, 0.0)[rechts]static final VectorVektor der negativen OrdinatenachseVector(0.0, -1.0)[oben]static final VectorDer NullvektorVector(0.0, 0.0).Fields inherited from class java.awt.geom.Point2D.Double
x, y -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionadd(double x, double y) Addiert die angegebenen Werte zur x- und y-Komponente des Vektors.Addiert den Vektorvectorzu diesem.static VectorAddiert die beiden Vektoren zu einem neuen Vektor.doubleangle()Bestimmt den Winkel, den der Vektor mit der Ordinatenachse einschließt in Grad.copy()Erzeugt einen neuen Vektor mit denselben Komponenten wie dieses Vektorobjekt.doubleBerechnet das Kreuzprodukt des Vektors mit dem angegebenen Vektor.static doubleBerechnet das Kreuzprodukt der angegebenen Vektoren.doubleBerechnet den Abstand zum angegebenen Punkt.static doubleBerechnet den Abstand zwischen den durch die angegebenen Vektoren beschriebenen Punkten.doubledistanceSq(Vector vector) Berechnet den quadrierten Abstand zum angegebenen Vektor.static doubledistanceSq(Vector vector1, Vector vector2) Berechnet den Abstand zum Quadrat zwischen den durch die angegebenen Vektoren beschriebenen Punkten.div(double scalar) static VectorErzeugt einen neuen Vektor der gleich dem angegebenen Vektor durch {code scalar} dividiert ist.doubleBestimmt das Skalarprodukt des Vektors mit dem angegebenen Vektor.static doubleBestimmt das Skalarprodukt der angegebenen Vektoren.doubleheading()Bestimmt den Winkel, den der Vektor mit der Ordinatenachse einschließt in Bogenmaß.interpolate(Vector vector, double t) Verschiebt diesen Vektor um den Faktortin Richtung des Vektorsvector.static Vectorinterpolate(Vector vector1, Vector vector2, double t) Erzeugt einen Vektor, der auf der Strecke zwischen den angegebenen Vektoren liegt.doublelength()Berechnet die Länge des Vektors.doublelengthSq()Berechnet die quadrierte Länge des Vektors.limit(double max) Beschränkt die Länge dieses Vektors auf den Bereich 0 bismax.limit(double min, double max) Beschränkt die Länge dieses Vektors auf den Bereichminbismax.Verschiebt diesen Vektor um den Faktortin Richtung des Vektorsvector.static VectorErzeugt einen Vektor, der auf der Strecke zwischen den angegebenen Vektoren liegt.static final Vectormouse()Vektor mit der aktuellen MauspositionVector(mouseX, mouseY)static VectorErzeugt einen neuen Vektor mit derselben Richtung wie der angegebene Vektor und der Länge 1.static Vectorrandom()Erzeugt einen Vektor mit zufälligen Werten.static Vectorrandom(double min, double max) Erzeugt einen Vektor mit zufälligen Werten innerhalb der angegebenen Grenzen.static Vectorrandom(double minX, double maxX, double minY, double maxY) Erzeugt einen Vektor mit zufälligen Werten innerhalb der angegebenen Grenzen.rotate(double degree) Dreht den Vektor umdegreeGrad im Uhrzeigersinn.static VectorDreht den Vektor umdegreeGrad im Uhrzeigersinn.rotateRad(double rad) Dreht den Vektor umradim Uhrzeigersinn.scale(double scalar) static VectorErzeugt einen neuen Vektor der gleich dem angegebenen Vektor um {code scalar} skaliert ist.set(double x, double y) Setzt die Komponenten dieses Vektors neu.Setzt die Komponenten dieses Vectors auf die Werte des angegebenen Punktes.Setzt die Komponenten dieses Vectors auf die Werte des angegebenen Vektors.setLength(double length) Legt die Länge des Vektors fest.static VectorErzeugt einen neuen Vektor mit derselben Richtung wie der angegebene Vektor und der Längelength.voidsetX(double x) Setzt die x-Komponente des Vektors.voidsetY(double y) Setzt die y-Komponente des Vektors.sub(double x, double y) static VectorSubtrahiert den zweiten vom ersten Vektor.toString()Methods inherited from class java.awt.geom.Point2D.Double
getX, getY, setLocationMethods inherited from class java.awt.geom.Point2D
clone, distance, distance, distance, distanceSq, distanceSq, distanceSq, equals, hashCode, setLocation
-
Field Details
-
ZERO
Der NullvektorVector(0.0, 0.0). -
UP
Vektor der negativen OrdinatenachseVector(0.0, -1.0)[oben] -
DOWN
Vektor der OrdinatenachseVector(0.0, 1.0)[unten] -
RIGHT
Vektor der AbszissenachseVector(1.0, 0.0)[rechts] -
LEFT
Vektor der negativen AbszissenachseVector(-1.0, 0.0)[links]
-
-
Constructor Details
-
Vector
public Vector()Erzeugt den Nullvektor. -
Vector
public Vector(double x, double y) Erzeugt einen Vektor mit den angegebenen Komponenten.- Parameters:
x- Die x-Komponente.y- Die y-Komponente.
-
Vector
Erzeugt einen Vektor mit denselben Werten wie der angegebene Punkt.- Parameters:
point- Ein Punkt, dessen Koordinaten kopiert werden.
-
-
Method Details
-
mouse
Vektor mit der aktuellen MauspositionVector(mouseX, mouseY)- Returns:
- Einen Vektor mit den Koordinaten des Mauszeigers.
-
random
Erzeugt einen Vektor mit zufälligen Werten.Die Werte liegen zwischen 0 und 100.
- Returns:
- Ein zufälliger Vektor.
-
random
Erzeugt einen Vektor mit zufälligen Werten innerhalb der angegebenen Grenzen.- Parameters:
min- Untere Grenze der Zufallswerte.max- Obere Grenze der Zufallswerte.- Returns:
- Ein zufälliger Vektor.
-
random
Erzeugt einen Vektor mit zufälligen Werten innerhalb der angegebenen Grenzen.- Parameters:
minX- Untere Grenze der x-Komponente.maxX- Obere Grenze der x-Komponente.minY- Untere Grenze der y-Komponente.maxY- Obere Grenze der y-Komponente.- Returns:
- Ein zufälliger Vektor.
-
normalize
Erzeugt einen neuen Vektor mit derselben Richtung wie der angegebene Vektor und der Länge 1.- Parameters:
vector- Der original Vektor.- Returns:
- Ein neuer Vektor mit der angegebene Länge.
-
sub
Subtrahiert den zweiten vom ersten Vektor.- Parameters:
vector1- Erster Vektor.vector2- Zweiter Vektor.- Returns:
- Differenzvektor der beiden Vektoren.
-
scale
Erzeugt einen neuen Vektor der gleich dem angegebenen Vektor um {code scalar} skaliert ist.- Parameters:
vector- Ein Vektor.scalar- Ein Skalar.- Returns:
- Ein skalierter Vektor.
-
div
Erzeugt einen neuen Vektor der gleich dem angegebenen Vektor durch {code scalar} dividiert ist.- Parameters:
vector- Ein Vektor.scalar- Ein Skalar.- Returns:
- Ein skalierter Vektor.
-
copy
Erzeugt einen neuen Vektor mit denselben Komponenten wie dieses Vektorobjekt.- Returns:
- Eine Kopie dieses Vektors.
-
set
Setzt die Komponenten dieses Vektors neu.- Parameters:
x- Der neue x-Wert.y- Der neue y-Wert.- Returns:
- Dieser Vektor selbst (method chaining)
-
set
Setzt die Komponenten dieses Vectors auf die Werte des angegebenen Vektors.- Parameters:
vector- Ein Vektor.- Returns:
- Dieser Vektor selbst (method chaining)
-
set
Setzt die Komponenten dieses Vectors auf die Werte des angegebenen Punktes.- Parameters:
pPunkt- Ein Punkt.- Returns:
- Dieser Vektor selbst (method chaining)
-
setX
public void setX(double x) Setzt die x-Komponente des Vektors.- Parameters:
x- Der neue x-Wert.
-
setY
public void setY(double y) Setzt die y-Komponente des Vektors.- Parameters:
y- Der neue y-Wert.
-
length
public double length()Berechnet die Länge des Vektors.Zur Berechnung der Länge muss eine Quadratwurzel gezogen werden. Dies ist langsam und kann unter Umständen vermieden werden, wenn mit
lengthSq()gearbeitet wird.- Returns:
- Die Länge des Vektors.
-
lengthSq
public double lengthSq()Berechnet die quadrierte Länge des Vektors.- Returns:
- Das Quadrat der Länge.
-
setLength
Legt die Länge des Vektors fest.- Parameters:
length- Die neue Länge des Vektors.- Returns:
- Dieser Vektor selbst (method chaining)
-
setLength
Erzeugt einen neuen Vektor mit derselben Richtung wie der angegebene Vektor und der Längelength.- Parameters:
vector- Der original Vektor.length- Die neue Länge des Vektors.- Returns:
- Ein neuer Vektor mit der angegebene Länge.
-
normalize
- Returns:
- Dieser Vektor selbst (method chaining)
-
add
Addiert den Vektorvectorzu diesem.- Parameters:
vector- Ein anderer Vektor.- Returns:
- Dieser Vektor selbst (method chaining)
-
add
Addiert die angegebenen Werte zur x- und y-Komponente des Vektors.- Parameters:
x- Summand x-Komponente.y- Summand y-Komponente.- Returns:
- Dieser Vektor selbst (method chaining)
-
add
Addiert die beiden Vektoren zu einem neuen Vektor.- Parameters:
vector1- Erster Vektor.vector2- Zweiter Vektor.- Returns:
- Summenvektor der beiden Vektoren.
-
sub
-
sub
-
scale
-
div
-
distance
Berechnet den Abstand zum angegebenen Punkt.Zur Berechnung der Länge des Differenzvektors muss eine Quadratwurzel gezogen werden. Um Geschwindigkeitsbuße zu vermeiden und auf den genauen Abstand verzichtet werden kann, kann unter Umständen
distanceSq(Vector)verwendet werden.- Parameters:
vector- Ein anderer Vektor.- Returns:
- Der Abstand zum Vektor.
-
distance
Berechnet den Abstand zwischen den durch die angegebenen Vektoren beschriebenen Punkten.Zur Berechnung der Länge des Differenzvektors muss eine Quadratwurzel gezogen werden. Um Geschwindigkeitsbuße zu vermeiden und auf den genauen Abstand verzichtet werden kann, kann unter Umständen
distanceSq(Vector, Vector)verwendet werden.- Parameters:
vector1- Der erste Ortsvektor.vector2- Der zweite Ortsvektor.- Returns:
- Der Abstand zwischen den Vektoren.
-
distanceSq
Berechnet den quadrierten Abstand zum angegebenen Vektor.Das Quadrat des Abstandes ist in der Regel schneller zu berechnen und ist in vielen Fällen ausreichend. Beispielsweise lassen sich Vergleiche mit dem quadrierten Abstand durchführen, wenn auch die gewünschte Entfernung quadriert wird.
- Parameters:
vector- Ein anderer Vektor.- Returns:
- Das Quadrat der Entfernung zum anderen Vektor.
-
distanceSq
Berechnet den Abstand zum Quadrat zwischen den durch die angegebenen Vektoren beschriebenen Punkten.Das Quadrat des Abstandes ist in der Regel schneller zu berechnen und ist in vielen Fällen ausreichend. Beispielsweise lassen sich Vergleiche mit dem quadrierten Abstand durchführen, wenn auch die gewünschte Entfernung quadriert wird.
- Parameters:
vector1- Der erste Ortsvektor.vector2- Der zweite Ortsvektor.- Returns:
- Der Abstand zwischen den Vektoren.
-
dot
Bestimmt das Skalarprodukt des Vektors mit dem angegebenen Vektor.- Parameters:
vector- Ein zweiter Vektor.- Returns:
- Das Skalarprodukt der Vektoren.
-
dot
Bestimmt das Skalarprodukt der angegebenen Vektoren.- Parameters:
vector1- Der erste Vektor.vector2- Der zweite Vektor.- Returns:
- Das Skalarprodukt der Vektoren.
-
cross
Berechnet das Kreuzprodukt des Vektors mit dem angegebenen Vektor.- Parameters:
vector- Ein Vektor.- Returns:
- Das Kreuzprodukt der Vektoren.
-
cross
Berechnet das Kreuzprodukt der angegebenen Vektoren.- Parameters:
vector1- Der erste Vektor.vector2- Der zweite Vektor.- Returns:
- Das Kreuzprodukt der Vektoren.
-
limit
Beschränkt die Länge dieses Vektors auf den Bereich 0 bismax.- Parameters:
max- Maximale Länge des Vektors.- Returns:
- Dieser Vektor selbst (method chaining)
- See Also:
-
limit
Beschränkt die Länge dieses Vektors auf den Bereichminbismax.- Parameters:
min- Minimale Länge des Vektors.max- Maximale Länge des Vektors.- Returns:
- Dieser Vektor selbst (method chaining)
- See Also:
-
angle
public double angle()Bestimmt den Winkel, den der Vektor mit der Ordinatenachse einschließt in Grad.- Returns:
- Winkel des Vektors in Grad.
-
heading
public double heading()Bestimmt den Winkel, den der Vektor mit der Ordinatenachse einschließt in Bogenmaß.- Returns:
- Winkel des Vektors in Bogenmaß.
-
rotate
Dreht den Vektor umdegreeGrad im Uhrzeigersinn.- Parameters:
degree- Gradzahl für die Rotation.- Returns:
- Dieser Vektor selbst (method chaining)
- See Also:
-
rotateRad
Dreht den Vektor umradim Uhrzeigersinn.- Parameters:
rad- Winkel der Rotation in Bogenmaß.- Returns:
- Dieser Vektor selbst (method chaining)
- See Also:
-
rotate
Dreht den Vektor umdegreeGrad im Uhrzeigersinn.- Parameters:
vector- Ein Vektor.degree- Gradzahl für die Rotation.- Returns:
- Ein gedrehter Vektor.
-
morph
Verschiebt diesen Vektor um den Faktortin Richtung des Vektorsvector. Im Vergleich zuinterpolate(Vector, double)isttauf den Bereich nur zwischen 0 und 1 beschränkt. Fürtgleich 0 passiert nichts, fürtwird dieser Vektor zuvector.- Parameters:
vector- Der erste Ortsvektor.t- Ein Wert zwischen 0 und 1.- Returns:
- Dieser Vektor selbst (method chaining)
-
morph
Erzeugt einen Vektor, der auf der Strecke zwischen den angegebenen Vektoren liegt. Der Ort des Vektors auf der Strecke wird relativ vonvector1abhängig vontbestimmt. Im Vergleich zuinterpolate(Vector, Vector, double)isttauf den Bereich nur zwischen 0 und 1 beschränkt. Fürtgleich 0 ist der erzeugte Vektor gleichvector1, fürtgleich 1 ist das Ergebnis gleichvector2. Fürtgleich 0.5 liegt der Vektor genau mittig zwischen den beiden Ortsvektoren.- Parameters:
vector1- Der erste Ortsvektor.vector2- Der zweite Ortsvektor.t- Ein Wert zwischen 0 und 1.- Returns:
- Ein Vektor zwischen den beiden Ortsvektoren.
-
interpolate
Verschiebt diesen Vektor um den Faktortin Richtung des Vektorsvector. Fürtgleich 0 ist der erzeugte Vektor gleichvector1, fürtgleich 1 ist das Ergebnis gleichvector2. Fürtgleich 0.5 liegt der Vektor genau mittig zwischen den beiden Ortsvektoren.Negative Werte für
tverschieben den Vektor vonvectorweg und Werte größer 1 schieben ihn über den anderen Vektor hinaus. Soll dies verhindert werden kannmorph(Vector, double)verwendet werden.- Parameters:
vector- Der erste Ortsvektor.t- Ein Wert zwischen 0 und 1.- Returns:
- Dieser Vektor selbst (method chaining)
-
interpolate
Erzeugt einen Vektor, der auf der Strecke zwischen den angegebenen Vektoren liegt. Der Ort des Vektors auf der Strecke wird relativ vonvector1abhängig vontbestimmt. Fürtgleich 0 ist der erzeugte Vektor gleichvector1, fürtgleich 1 ist das Ergebnis gleichvector2. Fürtgleich 0.5 liegt der Vektor genau mittig zwischen den beiden Ortsvektoren.Negative Werte für
tverschieben den Vektor vonvectorweg und Werte größer 1 schieben ihn über den anderen Vektor hinaus. Soll dies verhindert werden kannmorph(Vector, Vector, double)verwendet werden.- Parameters:
vector1- Der erste Ortsvektor.vector2- Der zweite Ortsvektor.t- Ein Wert zwischen 0 und 1.- Returns:
- Ein Vektor zwischen den beiden Ortsvektoren.
-
toString
- Overrides:
toStringin classPoint2D.Double
-