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.

Rückgabetyp:

Tuple[float, float]

Parameter:

position – Position als (x, y).

Rückgabe:

Neue Position als (x + self.x, y + self.y).

property angle: float#

Richtungswinkel in der Miniworlds-Konvention.

0 zeigt nach oben und 90 nach rechts. Entspricht to_direction().

Typ:

float

angle_to(other)[Quellcode]#

Berechnet den Winkel zu einem anderen Vektor oder zu einer Position.

Rückgabetyp:

float

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:

float

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:

float

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.center entspricht.

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.center entspricht.

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:

Vector

Parameter:

direction – Richtung in der Miniworlds-Konvention. Häufige Werte sind 0 oder "up", 90 oder "right", -90 oder "left" und 180 oder "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:

Vector

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 p1 nach p2 zeigt.

Rückgabetyp:

Vector

Parameter:
  • p1 – Startposition als (x, y).

  • p2 – Endposition als (x, y).

Rückgabe:

Vektor, der p2 - p1 entspricht.

get_normal()[Quellcode]#

Gibt einen Vektor zurück, der senkrecht zu diesem Vektor steht.

Rückgabetyp:

Vector

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:

float

Rückgabe:

Länge als Float.

limit(max_length)[Quellcode]#

Begrenzt die Vektorlänge, ohne seine Richtung zu ändern.

Rückgabetyp:

Vector

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.

Rückgabetyp:

Union[Vector, float]

Parameter:

other – Skalarwert oder ein anderer Vector.

Rückgabe:

Ein skalierter Vector bei Skalar-Eingabe oder ein Skalarprodukt bei Vektoren.

normalize()[Quellcode]#

Normalisiert den Vektor direkt auf die Länge 1.

Rückgabetyp:

Vector

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:

Vector

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:

float

Rückgabe:

Richtung in Grad. Gibt bei einem Vektor der Länge 0 den Wert 0 zurück.

to_position()[Quellcode]#

Gibt den Vektor als (x, y)-Tupel zurück.

Rückgabetyp:

Tuple[float, float]

property x: float#

Die x-Komponente des Vektors.

property y: float#

Die y-Komponente des Vektors.