Positions > Vektor#
API-Referenz#
- class miniworlds.positions.vector.Vector(x, y)[Quellcode]#
2D-Vektor für Bewegung, Geometrie und Physik.
Unterstützt Rechenoperationen mit anderen Vectors und mit 2D-Tupeln.
Beispiele
direction = Vector.from_actors(enemy, player) enemy.move_vector(direction.normalize() * 2)
- __init__(x, y)[Quellcode]#
Erzeugt einen 2D-Vektor.
- Parameter:
x – Horizontale Komponente.
y – Vertikale Komponente.
- add_to_position(position)[Quellcode]#
Addiert den Vektor zu einer Position.
- property angle: float#
Richtungswinkel in der Miniworlds-Konvention.
0zeigt nach oben und90nach rechts. Entsprichtto_direction().- Typ:
- angle_to(other)[Quellcode]#
Berechnet den Winkel zu einem anderen Vektor oder zu einer Position.
- Rückgabetyp:
- Parameter:
other – A Vector or tuple.
- Rückgabe:
Winkel in Grad zwischen 0 und 180.
Beispiele
angle = Vector(1, 0).angle_to((0, 1))
- distance_to(other)[Quellcode]#
Berechnet den euklidischen Abstand zu einem anderen Vektor oder zu einer Position.
- Rückgabetyp:
- Parameter:
other – A Vector or tuple.
- Rückgabe:
Der Abstand als Float.
Beispiele
distance = Vector(0, 0).distance_to((3, 4))
- dot(other)[Quellcode]#
Berechnet das Skalarprodukt.
- Rückgabetyp:
- Parameter:
other – Der andere Vector.
- Rückgabe:
Skalarprodukt als Float.
- classmethod from_actor_and_position(t1, pos)[Quellcode]#
Erzeugt einen Vektor vom Actor-Mittelpunkt zu einer Zielposition.
- Rückgabetyp:
Vector
- Parameter:
t1 – Der Start-Actor.
pos – Zielposition als
(x, y).
- Rückgabe:
Ein Vektor, der
pos - t1.centerentspricht.
Beispiele
vector = Vector.from_actor_and_position(player, (100, 80))
- classmethod from_actor_direction(actor)[Quellcode]#
Erzeugt einen Einheitsvektor aus der Richtung eines Actors.
- Rückgabetyp:
Vector
- Parameter:
actor – Actor, dessen Richtung verwendet wird.
- Rückgabe:
Ein Einheitsvektor, der in die Actor-Richtung zeigt.
Beispiele
step = Vector.from_actor_direction(player) * 5 player.move_vector(step)
- classmethod from_actors(t1, t2)[Quellcode]#
Erzeugt einen Vektor von einem Actor zu einem anderen Actor.
- Rückgabetyp:
Vector
- Parameter:
t1 – Start-Actor.
t2 – Ziel-Actor.
- Rückgabe:
Ein Vektor, der
t2.center - t1.centerentspricht.
Beispiele
enemy_vector = Vector.from_actors(player, enemy) if enemy_vector.length() < 50: player.move_away(enemy, 3)
- classmethod from_direction(direction)[Quellcode]#
Erzeugt einen Einheitsvektor aus einer Miniworlds-Richtung.
- Rückgabetyp:
- Parameter:
direction – Richtung in der Miniworlds-Konvention. Häufige Werte sind
0oder"up",90oder"right",-90oder"left"und180oder"down".- Rückgabe:
Ein neuer Einheits-Vector, der in die angegebene Richtung zeigt.
Beispiele
@player.register def on_key_pressed_right(self): step = Vector.from_direction("right") * 5 self.move_vector(step)
- classmethod from_position(position)[Quellcode]#
Erzeugt einen Vektor aus einer Position.
- Rückgabetyp:
- Parameter:
position – Position als
(x, y).- Rückgabe:
Ein neuer Vector mit denselben x- und y-Komponenten.
Beispiele
vector = Vector.from_position(actor.position)
- classmethod from_positions(p1, p2)[Quellcode]#
Erzeugt einen Vektor, der von
p1nachp2zeigt.- Rückgabetyp:
- Parameter:
p1 – Startposition als
(x, y).p2 – Endposition als
(x, y).
- Rückgabe:
Vektor, der
p2 - p1entspricht.
- get_normal()[Quellcode]#
Gibt einen Vektor zurück, der senkrecht zu diesem Vektor steht.
- Rückgabetyp:
- Rückgabe:
Ein neuer Vector, der um 90° gegen den Uhrzeigersinn gedreht ist.
- length()[Quellcode]#
Gibt die euklidische Länge des Vektors zurück.
- Rückgabetyp:
- Rückgabe:
Länge als Float.
- limit(max_length)[Quellcode]#
Begrenzt die Vektorlänge, ohne seine Richtung zu ändern.
- Rückgabetyp:
- Parameter:
max_length – Maximal erlaubte Länge.
- Rückgabe:
The vector itself.
Beispiele
velocity.limit(10)
- multiply(other)[Quellcode]#
Multipliziert mit einem Skalar oder berechnet ein Skalarprodukt.
- normalize()[Quellcode]#
Normalisiert den Vektor direkt auf die Länge 1.
- Rückgabetyp:
- Rückgabe:
Der Vektor selbst. Ein Vektor der Länge 0 wird unverändert zurückgegeben.
- rotate(theta)[Quellcode]#
Rotate the vector in-place.
- Rückgabetyp:
- Parameter:
theta – Drehwinkel in Grad.
- Rückgabe:
The vector itself.
Beispiele
vector.rotate(90)
- to_direction()[Quellcode]#
Wandelt den Vektor in eine Miniworlds-Richtung um.
- Rückgabetyp:
- Rückgabe:
Richtung in Grad. Gibt bei einem Vektor der Länge 0 den Wert
0zurück.
- to_position()[Quellcode]#
Gibt den Vektor als
(x, y)-Tupel zurück.