====== std.vector ====== 2D-Vektormathematik mit dem ''Vec2''-Typ (zwei ''int64''-Felder x/y, typisch in Mikro-Pixel oder festen Einheiten). Vollständige Algebra: Addition, Subtraktion, Skalierung, Dot-Produkt, Cross-Produkt, Länge, Normalisierung (''Vec2Normalize''), Rotation (90°/180°/270° und beliebiger Winkel in Grad), Projektion auf einen anderen Vektor, Reflexion, lineare Interpolation (''Vec2Lerp''), Clamp, Perpendicular-Vektor und Heading-Winkel. Einsatzbereiche: Basistyp für die gesamte Geometriebibliothek (''std.rect'', ''std.circle'', ''std.vector_batch''), Spielmechaniken, Physik-Simulationen, GUI-Koordinatensysteme. **Autor:** Andreas Röne\\ **Copyright:** 2024-2025 Andreas Röne ---- ===== Imports ===== * ''[[lyx_-_programmiersprache:units:math|std.math]]'' ---- ===== Typen ===== ==== Vec2 (struct) ==== ^ Feld ^ Typ ^ | ''x'' | ''int64'' | | ''y'' | ''int64'' | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''IntSqrt(n: int64): int64'' | priv | Ganzzahl-Quadratwurzel berechnen | | ''Vec2New(x: int64, y: int64): Vec2'' | pub | Neuen Vec2 aus x/y erzeugen | | ''Vec2Zero(): Vec2'' | pub | Nullvektor (0, 0) erzeugen | | ''Vec2FromScalar(v: int64): Vec2'' | pub | Skalar als Vec2 (v, v) erzeugen | | ''Vec2Add(a: Vec2, b: Vec2): Vec2'' | pub | Zwei Vektoren addieren | | ''Vec2Sub(a: Vec2, b: Vec2): Vec2'' | pub | Vektor b von a subtrahieren | | ''Vec2Mul(v: Vec2, scalar: int64): Vec2'' | pub | Vektor mit Skalar multiplizieren | | ''Vec2Div(v: Vec2, scalar: int64): Vec2'' | pub | Vektor durch Skalar dividieren | | ''Vec2Negate(v: Vec2): Vec2'' | pub | Vektor negieren | | ''Vec2Dot(a: Vec2, b: Vec2): int64'' | pub | Skalarprodukt zweier Vektoren | | ''Vec2Cross(a: Vec2, b: Vec2): int64'' | pub | Kreuzprodukt zweier Vektoren | | ''Vec2LengthSquared(v: Vec2): int64'' | pub | Quadrat der Vektorlänge berechnen | | ''Vec2Length(v: Vec2): int64'' | pub | Länge des Vektors berechnen | | ''Vec2DistanceSquared(a: Vec2, b: Vec2): int64'' | pub | Quadratischen Abstand zweier Punkte berechnen | | ''Vec2Distance(a: Vec2, b: Vec2): int64'' | pub | Abstand zweier Punkte berechnen | | ''Vec2Normalize(v: Vec2): Vec2'' | pub | Vektor auf Einheitslänge normalisieren | | ''Vec2NormalizeSafe(v: Vec2, fallback: Vec2): Vec2'' | pub | Sicher normalisieren, Fallback bei Nullvektor | | ''Vec2Lerp(a: Vec2, b: Vec2, t: int64): Vec2'' | pub | Linear zwischen zwei Vektoren interpolieren | | ''Vec2Clamp(v: Vec2, min: Vec2, max: Vec2): Vec2'' | pub | Vektor auf Min-Max-Bereich begrenzen | | ''Vec2Rotate(v: Vec2, angle_deg: int64): Vec2'' | pub | Vektor um Winkel in Grad rotieren | | ''Vec2Rotate90(v: Vec2): Vec2'' | pub | Vektor um 90 Grad rotieren | | ''Vec2Rotate180(v: Vec2): Vec2'' | pub | Vektor um 180 Grad rotieren | | ''Vec2Rotate270(v: Vec2): Vec2'' | pub | Vektor um 270 Grad rotieren | | ''Vec2Equal(a: Vec2, b: Vec2): bool'' | pub | Zwei Vektoren auf Gleichheit prüfen | | ''Vec2NotEqual(a: Vec2, b: Vec2): bool'' | pub | Zwei Vektoren auf Ungleichheit prüfen | | ''Vec2IsZero(v: Vec2): bool'' | pub | Prüft ob Vektor der Nullvektor ist | | ''Vec2IsNormalized(v: Vec2): bool'' | pub | Prüft ob Vektor normalisiert ist | | ''Vec2Min(a: Vec2, b: Vec2): Vec2'' | pub | Komponentenweises Minimum zweier Vektoren | | ''Vec2Max(a: Vec2, b: Vec2): Vec2'' | pub | Komponentenweises Maximum zweier Vektoren | | ''Vec2Abs(v: Vec2): Vec2'' | pub | Absolutwert beider Komponenten bilden | | ''Vec2Sign(v: Vec2): Vec2'' | pub | Vorzeichen beider Komponenten liefern | | ''Vec2Perpendicular(v: Vec2): Vec2'' | pub | Senkrechten Vektor erzeugen | | ''Vec2Project(v: Vec2, onto: Vec2): Vec2'' | pub | Vektor auf einen anderen projizieren | | ''Vec2Reflect(v: Vec2, normal: Vec2): Vec2'' | pub | Vektor an Normalen reflektieren | | ''Vec2AngleTo(v: Vec2, target: Vec2): int64'' | pub | Winkel zwischen zwei Vektoren berechnen | | ''Vec2Heading(v: Vec2): int64'' | pub | Richtungswinkel des Vektors liefern |