Zum Hauptinhalt springen

vec2

Schnittstelle zur Darstellung eines 2D-Vektors. Ein 2D-Vektor wird durch (x, y)-Koordinaten dargestellt und kann einen Punkt in einer Ebene, einen Richtungsvektor oder andere Arten von Daten mit drei geordneten Dimensionen darstellen. Vec2-Objekte werden mit der ecs.math.vec2 Vec2Factory oder durch Operationen mit anderen Vec2-Objekten erstellt.

Quelle

Die Schnittstelle Vec2Source stellt ein beliebiges Objekt dar, das über x- und y-Eigenschaften verfügt und somit als Datenquelle zur Erstellung eines Vec2 verwendet werden kann. Darüber hinaus kann Vec2Source als Argument für Vec2-Algorithmen verwendet werden, was bedeutet, dass jedes Objekt mit {x: number, y: number} Eigenschaften verwendet werden kann.

Eigenschaften

Vec2Source hat die folgenden aufzählbaren Eigenschaften:

readonly x: number Zugriff auf die x-Komponente des Vektors.

y: Zahl`` Zugriff auf die y-Komponente des Vektors.

Fabrik

von

Erstellen Sie einen Vec2 aus einem Vec2 oder einem anderen Objekt mit x, y Eigenschaften.

ecs.math.vec2.from({x, y}: {x: number, y: number}) // -> vec2

eine

Erstellen Sie einen vec2, bei dem alle Elemente auf eins gesetzt sind. Dies ist äquivalent zu vec2.from({x: 1, y: 1}).

ecs.math.vec2.one() // -> vec2

scale

Erstellen Sie einen vec2 mit allen Elementen, die auf den Skalenwert s eingestellt sind. Dies ist äquivalent zu vec2.from({x: s, y: s}).

ecs.math.vec2.scale(s: Zahl) // -> vec2

xy

Erstellen Sie einen Vec2 aus x- und y-Werten. Dies ist äquivalent zu vec2.from({x, y}).

ecs.math.vec2.xy(x: Zahl, y: Zahl) // -> vec2

Null

Erstellen Sie einen vec2, bei dem alle Elemente auf Null gesetzt sind. Dies ist äquivalent zu vec2.from({x: 0, y: 0}).

ecs.math.vec2.zero() // -> vec2

Unveränderlich

Die folgenden Methoden führen Berechnungen auf der Grundlage des aktuellen Wertes eines Vec2 durch, verändern aber nicht dessen Inhalt. Methoden, die Vec2-Typen zurückgeben, geben neue Objekte zurück. Unveränderliche APIs sind in der Regel sicherer, besser lesbar und weniger fehleranfällig als veränderliche APIs, können aber in Situationen, in denen Tausende von Objekten pro Frame zugewiesen werden, ineffizient sein.

hinweis

Wenn die Garbage Collection die Leistung beeinträchtigt, sollten Sie die unten beschriebene Mutable API verwenden.

klonen.

Erstellen Sie einen neuen Vektor mit denselben Komponenten wie dieser Vektor.

existingVec2.clone() // -> vec2

Kreuz

Berechnen Sie das Kreuzprodukt dieses Vektors und eines anderen Vektors. Bei 2D-Vektoren ist das Kreuzprodukt der Betrag der z-Komponente des 3D-Kreuzprodukts der beiden Vektoren mit 0 als z-Komponente.

existingVec2.cross(v: Vec2Source) // -> vec2

EntfernungZu

Berechnen Sie den euklidischen Abstand zwischen diesem Vektor und einem anderen Vektor.

existingVec2.distanceTo(v: Vec2Source) // -> vec2

dividieren

Elementweise Vektordivision.

existingVec2.divide(v: Vec2Source) // -> vec2

Punkt

Berechnen Sie das Punktprodukt dieses Vektors und eines anderen Vektors.

existingVec2.dot(v: Vec2Source) // -> vec2

ist gleich

Prüfen, ob zwei Vektoren gleich sind, mit einer bestimmten Fließkommatoleranz.

existingVec2.equals(v: Vec2Source, tolerance: number) // -> boolesch

Länge

Länge des Vektors.

existingVec2.length() // -> Zahl

minus

Subtrahiert einen Vektor von diesem Vektor.

existingVec2.minus(v: Vec2Source) // -> vec2

mischen

Berechne eine lineare Interpolation zwischen diesem Vektor und einem anderen Vektor v mit einem Faktor t, so dass das Ergebnis thisVec * (1 - t) + v * t ist. Der Faktor t sollte zwischen 0 und 1 liegen.

existingVec2.mix(v: Vec2Source, t: Zahl) // -> vec2

normalisieren

Gibt einen neuen Vektor mit der gleichen Richtung wie dieser Vektor zurück, aber mit der Länge 1.

existingVec2.normalize() // -> vec2

plus

Zwei Vektoren zusammenfügen.

existingVec2.plus(v: Vec2Source) // -> vec2

scale

Multiplizieren des Vektors mit einem Skalar.

existingVec2.scale(s: Zahl) // -> vec2

mal

Elementweise Vektormultiplikation.

existingVec2.times(v: Vec2Source) // -> vec2

Veränderlich

Die folgenden Methoden führen Berechnungen auf der Grundlage des aktuellen Wertes eines Vec2 durch und ändern dessen Inhalt an Ort und Stelle. Sie sind parallel zu den Methoden in der obigen veränderlichen API. Methoden, die Vec2-Typen zurückgeben, geben einen Verweis auf das aktuelle Objekt zurück, um die Methodenverkettung zu erleichtern. Veränderbare APIs können leistungsfähiger sein als unveränderliche APIs, sind aber in der Regel weniger sicher, weniger lesbar und fehleranfälliger.

setDivide

Elementweise Vektordivision. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setDivide(v: Vec2Source) // -> vec2

setMinus

Subtrahiert einen Vektor von diesem Vektor. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setMinus(v: Vec2Source) // -> vec2

setMix

Berechne eine lineare Interpolation zwischen diesem Vektor und einem anderen Vektor v mit einem Faktor t, so dass das Ergebnis thisVec * (1 - t) + v * t ist. Der Faktor t sollte zwischen 0 und 1 liegen. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setMinus(v: Vec2Source, t: Zahl) // -> vec2

setNormalize

Setzt den Vektor auf eine Version von sich selbst mit der gleichen Richtung, aber mit der Länge 1. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setNormalize() // -> vec2

setPlus

Zwei Vektoren zusammenfügen. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setPlus(v: Vec2Source) // -> vec2

setScale

Multiplizieren des Vektors mit einem Skalar. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setPlus(s: Zahl) // -> vec2

setTimes

Elementweise Vektormultiplikation. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setTimes(v: Vec2Source) // -> vec2

setX

Die x-Komponente von Vec2 einstellen. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setX(v: Zahl) // -> vec2

setY

Die y-Komponente von Vec2 einstellen. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setY(v: Zahl) // -> vec2

Einstellung

Die folgenden Methoden setzen den Wert des aktuellen Vec2-Objekts ohne Rücksicht auf seinen aktuellen Inhalt und ersetzen das, was vorher da war.

makeOne

Setzen Sie den Vec2 auf alle Einsen. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.makeOne() // -> vec2

makeScale

Stellen Sie den Vec2 so ein, dass alle Komponenten auf den Skalenwert s eingestellt sind. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.makeScale(s: Zahl) // -> vec2

makeZero

Setzen Sie den Vec2 auf Nullen. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.makeZero() // -> vec2

setFrom

Legen Sie diesen Vec2 so fest, dass er denselben Wert hat wie ein anderer Vec2 oder ein anderes Objekt mit x- und y-Eigenschaften. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setFrom(source: Vec2Source) // -> vec2

setXy

Stellen Sie die x- und y-Komponenten von Vec2 ein. Speichert das Ergebnis in diesem Vec2 und gibt diesen Vec2 zur Verkettung zurück.

existingVec2.setFrom(x: Zahl, y: Zahl) // -> vec2