Bitbybit Docs
    Bereite Suchindex vor...

    Klasse Vector

    Vektorrechnung auf einfachen Zahlen-Arrays. Ein Vektor ist ein Array von Zahlen; in 3D ist er [x, y, z] mit Y nach oben, in derselben Gestalt wie ein Punkt, sodass beide an die Methoden des jeweils anderen übergeben werden können. Jede Methode gibt ein neues Array oder eine Zahl zurück und ändert nie ihre Eingaben. Winkel sind in Grad.

    Index

    Konstruktoren

    angles

    • Misst den Winkel zwischen zwei Vektoren in Grad, immer zwischen 0 und 180.

      Die Drehrichtung wird nicht berücksichtigt; verwenden Sie dafür signedAngleBetween. Beispiel: [1,0,0] und [0,1,0] -> 90

      Parameter

      Rückgabewert number

      Winkel in Grad

      const angle = bitbybit.vector.angleBetween({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Misst den vorzeichenbehafteten Winkel vom ersten 2D-Vektor zum zweiten, in Grad von -180 bis 180.

      Nur die ersten beiden Einträge jedes Vektors werden verwendet; ein positiver Winkel dreht gegen den Uhrzeigersinn. Beispiel: [1,0] nach [0,1] -> 90, [0,1] nach [1,0] -> -90

      Parameter

      Rückgabewert number

      Vorzeichenbehafteter Winkel in Grad

      const angle = bitbybit.vector.angleBetweenNormalized2d({ first: [1, 0], second: [0, 1] });
      
    • Misst den Winkel vom ersten Vektor zum zweiten, drehend um eine Bezugsrichtung, in Grad von 0 bis 360.

      Die Drehung ist gegen den Uhrzeigersinn, wenn der Bezugsvektor auf Sie zeigt. Beispiel: [1,0,0] nach [0,0,-1] um [0,1,0] -> 90

      Parameter

      Rückgabewert number

      Winkel in Grad von 0 bis 360

      const angle = bitbybit.vector.positiveAngleBetween({ first: [1, 0, 0], second: [0, 0, -1], reference: [0, 1, 0] });
      
    • Misst den Winkel vom ersten Vektor zum zweiten, drehend um eine Bezugsrichtung, in Grad von 0 bis 360.

      Die Drehung ist gegen den Uhrzeigersinn, wenn der Bezugsvektor auf Sie zeigt: eine Drehung im Uhrzeigersinn um 30 Grad wird als 330 gelesen. Beispiel: [1,0,0] nach [0,0,-1] um [0,1,0] -> 90

      Parameter

      Rückgabewert number

      Winkel in Grad von 0 bis 360

      const angle = bitbybit.vector.signedAngleBetween({ first: [1, 0, 0], second: [0, 0, -1], reference: [0, 1, 0] });
      

    base

    • Berechnet das Kreuzprodukt zweier 3D-Vektoren: einen Vektor im rechten Winkel zu beiden.

      Seine Richtung folgt der Rechte-Hand-Regel und seine Länge ist der Flächeninhalt des Parallelogramms, das die beiden Vektoren aufspannen. Beispiel: [1,0,0] x [0,1,0] -> [0,0,1]

      Parameter

      Rückgabewert number[]

      Der Vektor senkrecht zu beiden

      const normal = bitbybit.vector.cross({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Teilt jeden Eintrag eines Vektors durch eine Zahl.

      Beispiel: [10,20,30] / 2 -> [5,10,15]

      Parameter

      Rückgabewert number[]

      Der dividierte Vektor

      const half = bitbybit.vector.div({ vector: [10, 20, 30], scalar: 2 });
      
    • Zieht den ersten Wert eines Vektors von seinem letzten ab, was bei einer sortierten Liste ihre Spanne ist.

      Beispiel: [1,3,5,9] -> 8

      Parameter

      Rückgabewert number

      Letzter Wert minus erster Wert

      const span = bitbybit.vector.domain({ vector: [1, 3, 5, 9] });
      
    • Berechnet das Skalarprodukt zweier Vektoren: die Summe der Produkte zusammengehöriger Einträge.

      Es ist 0 für Vektoren im rechten Winkel und, für Einheitsvektoren, der Kosinus des Winkels zwischen ihnen. Beispiel: [1,2,3] und [4,5,6] -> 32

      Parameter

      Rückgabewert number

      Das Skalarprodukt

      const projection = bitbybit.vector.dot({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Multipliziert jeden Eintrag eines Vektors mit einer Zahl.

      Beispiel: [2,3,4] x 5 -> [10,15,20]

      Parameter

      • inputs: VectorScalarDto

        Der Vektor und die Zahl, mit der multipliziert wird

      Rückgabewert number[]

      Der skalierte Vektor

      const scaled = bitbybit.vector.mul({ vector: [2, 3, 4], scalar: 5 });
      
    • Kehrt das Vorzeichen jedes Eintrags um, sodass der Vektor in die entgegengesetzte Richtung zeigt.

      Beispiel: [5,-3,2] -> [-5,3,-2]

      Parameter

      Rückgabewert number[]

      Der negierte Vektor

      const opposite = bitbybit.vector.neg({ vector: [5, -3, 2] });
      
    • Berechnet die quadrierte Länge eines Vektors, was die Quadratwurzel vermeidet, wenn nur Längen verglichen werden.

      Beispiel: [3,4,0] -> 25

      Parameter

      Rückgabewert number

      Die quadrierte Länge

      const n2 = bitbybit.vector.normSquared({ vector: [3, 4, 0] });
      
    • Berechnet die Länge eines Vektors.

      Beispiel: [3,4,0] -> 5, [1,0,0] -> 1

      Parameter

      Rückgabewert number

      Die Länge in Modelleinheiten

      const len = bitbybit.vector.norm({ vector: [3, 4, 0] });
      
    • Skaliert einen 3D-Vektor auf die Länge 1 und behält dabei seine Richtung.

      Ein Vektor, der kürzer als 1e-8 ist, hat keine Richtung, die behalten werden könnte, daher ist das Ergebnis undefined. Beispiel: [3,4,0] -> [0.6,0.8,0]

      Parameter

      • inputs: VectorDto

        Der zu normierende 3D-Vektor

      Rückgabewert number[]

      Der Einheitsvektor oder undefined bei einer Eingabe mit Länge null

      const direction = bitbybit.vector.normalized({ vector: [3, 4, 0] });
      
    • Ermittelt den Punkt in einem gegebenen Abstand von einem Startpunkt entlang einer Richtung.

      Die Richtung wird so verwendet, wie sie gegeben ist, daher legt eine Richtung der Länge 2 den doppelten Abstand zurück. Beispiel: Start [0,0,0], Richtung [1,0,0], Abstand 5 -> [5,0,0]

      Parameter

      • inputs: RayPointDto

        Der Startpunkt, die Richtung und der Abstand

      Rückgabewert number[]

      Der Punkt auf dem Strahl

      const ahead = bitbybit.vector.onRay({ point: [0, 0, 0], vector: [1, 0, 0], distance: 5 });
      
    • Zieht den zweiten Vektor vom ersten ab, Eintrag für Eintrag.

      Beispiel: [10,20,30] - [1,2,3] -> [9,18,27]

      Parameter

      • inputs: TwoVectorsDto

        Der Vektor, von dem subtrahiert wird, und der Vektor, der subtrahiert wird

      Rückgabewert number[]

      Der Vektor der Differenzen

      const diff = bitbybit.vector.sub({ first: [10, 20, 30], second: [1, 2, 3] });
      
    • Addiert alle Werte eines Vektors zu einer Zahl.

      Beispiel: [1,2,3,4] -> 10

      Parameter

      • inputs: VectorDto

        Der aufzusummierende Vektor

      Rückgabewert number

      Die Summe

      const total = bitbybit.vector.sum({ vector: [1, 2, 3, 4] });
      
    • Berechnet die quadrierte Länge eines 3D-Vektors, was die Quadratwurzel vermeidet, wenn nur Längen verglichen werden.

      Beispiel: [3,4,0] -> 25

      Parameter

      Rückgabewert number

      Die quadrierte Länge

      const l2 = bitbybit.vector.lengthSq({ vector: [3, 4, 0] });
      
    • Berechnet die Länge eines 3D-Vektors.

      Beispiel: [3,4,0] -> 5

      Parameter

      Rückgabewert number

      Die Länge in Modelleinheiten

      const len = bitbybit.vector.length({ vector: [3, 4, 0] });
      

    create

    • Erzeugt einen 3D-Vektor aus seinen x-, y- und z-Werten.

      Beispiel: x=1, y=2, z=3 -> [1,2,3]

      Parameter

      Rückgabewert Vector3

      Der Vektor [x, y, z]

      const up = bitbybit.vector.vectorXYZ({ x: 0, y: 1, z: 0 });
      
    • Erzeugt einen 2D-Vektor aus seinen x- und y-Werten.

      Beispiel: x=3, y=4 -> [3,4]

      Parameter

      Rückgabewert Vector2

      Der Vektor [x, y]

      const right = bitbybit.vector.vectorXY({ x: 1, y: 0 });
      
    • Listet die ganzen Zahlen von 0 bis, aber ohne, max auf.

      Beispiel: max=5 -> [0,1,2,3,4]

      Parameter

      • inputs: RangeMaxDto

        Das Ende des Bereichs, das ausgelassen wird

      Rückgabewert number[]

      Die Zahlen von 0 bis max - 1

      const indices = bitbybit.vector.range({ max: 5 });
      
    • Listet die Zahlen von min bis max in Schritten von step auf; max ist enthalten, wenn ein Schritt darauf landet.

      Beispiel: min=0, max=10, step=2 -> [0,2,4,6,8,10]

      Parameter

      • inputs: SpanDto

        Der Anfang, das Ende und die Schrittweite

      Rückgabewert number[]

      Die Zahlen in der Spanne

      const values = bitbybit.vector.span({ min: 0, max: 10, step: 2.5 });
      
    • Listet nrItems Zahlen von min bis max auf, verteilt nach einer Easing-Kurve, sodass sie sich an einem Ende oder an beiden drängen.

      Mit intervals an enthält das Ergebnis die Lücken zwischen Nachbarn statt der Werte selbst. Beispiel: min=0, max=100, nrItems=5, ease='easeInQuad' -> [0, 6.25, 25, 56.25, 100]

      Parameter

      • inputs: SpanEaseItemsDto

        Der Anfang, das Ende, die Anzahl der Elemente, das Easing und ob die Lücken zurückgegeben werden

      Rückgabewert number[]

      Die abgeflachten Zahlen oder die Lücken zwischen ihnen

      const eased = bitbybit.vector.spanEaseItems({ min: 0, max: 100, nrItems: 5, ease: Bit.Inputs.Math.easeEnum.easeInQuad, intervals: false });
      
    • Listet nrItems gleichmäßig verteilte Zahlen von min bis max auf, beide enthalten.

      Beispiel: min=0, max=10, nrItems=5 -> [0, 2.5, 5, 7.5, 10]

      Parameter

      Rückgabewert number[]

      Die gleichmäßig verteilten Zahlen

      const values = bitbybit.vector.spanLinearItems({ min: 0, max: 10, nrItems: 5 });
      
    • Verwandelt eine Liste von Zahlen-Zeichenketten in Zahlen.

      Eine Zeichenkette, die keine Zahl ist, wird zu NaN. Beispiel: ['1', '2.5', '3'] -> [1, 2.5, 3]

      Parameter

      Rückgabewert number[]

      Die Zahlen

      const numbers = bitbybit.vector.parseNumbers({ vector: ["1", "2.5", "-3"] });
      

    distance

    • Berechnet den quadrierten Abstand zwischen zwei Vektoren, was die Quadratwurzel vermeidet, wenn nur Abstände verglichen werden.

      Beispiel: [0,0,0] nach [3,4,0] -> 25

      Parameter

      Rückgabewert number

      Der quadrierte Abstand

      const d2 = bitbybit.vector.distSquared({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Berechnet den geradlinigen Abstand zwischen zwei Vektoren.

      Beispiel: [0,0,0] nach [3,4,0] -> 5

      Parameter

      Rückgabewert number

      Der Abstand in Modelleinheiten

      const distance = bitbybit.vector.dist({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Blendet zwei Vektoren linear um einen Anteil über.

      fraction ist der Anteil von first: 1 ergibt first, 0 ergibt second, 0.5 den Mittelpunkt. Beispiel: [0,0,0] und [10,10,10] bei 0.5 -> [5,5,5]

      Parameter

      Rückgabewert number[]

      Der gemischte Vektor

      const mid = bitbybit.vector.lerp({ first: [0, 0, 0], second: [10, 10, 10], fraction: 0.5 });
      

    extract

    • Ermittelt den größten Wert in einem Vektor.

      Beispiel: [3, 7, 2, 9, 1] -> 9

      Parameter

      Rückgabewert number

      Der größte Eintrag

      const largest = bitbybit.vector.max({ vector: [3, 7, 2, 9, 1] });
      
    • Ermittelt den kleinsten Wert in einem Vektor.

      Beispiel: [3, 7, 2, 9, 1] -> 1

      Parameter

      Rückgabewert number

      Der kleinste Eintrag

      const smallest = bitbybit.vector.min({ vector: [3, 7, 2, 9, 1] });
      

    remove

    • Entfernt jeden wiederholten Vektor aus einer Liste und behält das erste Vorkommen jedes Vektors.

      Zwei Vektoren gelten als gleich, wenn sich jeder Eintrag um weniger als tolerance unterscheidet. Beispiel: [[1,2,3], [4,5,6], [1,2,3], [7,8,9]] -> [[1,2,3], [4,5,6], [7,8,9]]

      Parameter

      Rückgabewert number[][]

      Die Vektoren ohne Wiederholungen, in ihrer ursprünglichen Reihenfolge

      const unique = bitbybit.vector.removeAllDuplicateVectors({
      vectors: [[1, 2, 3], [4, 5, 6], [1, 2, 3]],
      tolerance: 1e-7,
      });
    • Entfernt einen Vektor, wenn er den direkt davor wiederholt; derselbe Vektor weiter entfernt wird behalten.

      Mit checkFirstAndLast an wird auch ein letzter Vektor verworfen, der den ersten wiederholt, was eine Punktschleife sauber schließt. Einträge innerhalb von tolerance zueinander gelten als gleich. Beispiel: [[1,2], [1,2], [3,4], [1,2]] -> [[1,2], [3,4], [1,2]]

      Parameter

      Rückgabewert number[][]

      Die Vektoren ohne aufeinanderfolgende Wiederholungen

      const cleaned = bitbybit.vector.removeConsecutiveDuplicateVectors({
      vectors: [[0, 0], [0, 0], [1, 1], [0, 0]],
      checkFirstAndLast: true,
      tolerance: 1e-7,
      });

    sum

    • Addiert eine Liste von Vektoren Eintrag für Eintrag zu einem Vektor.

      Das Ergebnis hat so viele Einträge wie der erste Vektor. Beispiel: [[1,2,3], [4,5,6], [7,8,9]] -> [12,15,18]

      Parameter

      Rückgabewert number[]

      Der Vektor der Summen

      const total = bitbybit.vector.addAll({ vectors: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] });
      
    • Addiert zwei Vektoren Eintrag für Eintrag.

      Beispiel: [1,2,3] + [4,5,6] -> [5,7,9]

      Parameter

      Rückgabewert number[]

      Der Vektor der Summen

      const sum = bitbybit.vector.add({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Sagt, ob jeder Wert in einer Liste boolescher Werte true ist.

      Beispiel: [true, true, true] -> true, [true, false, true] -> false

      Parameter

      Rückgabewert boolean

      True, wenn kein Eintrag false ist

      const allTrue = bitbybit.vector.all({ vector: [true, true, false] });
      

    validate

    • Sagt, ob zwei Vektoren innerhalb einer Toleranz gleich sind, Eintrag für Eintrag.

      Vektoren unterschiedlicher Länge sind nie gleich. Beispiel: [1,2,3] und [1.0001,2.0001,3.0001] mit Toleranz 0.001 -> true

      Parameter

      Rückgabewert boolean

      True, wenn sich jeder Eintrag um weniger als die Toleranz unterscheidet

      const same = bitbybit.vector.vectorsTheSame({ vec1: [1, 2, 3], vec2: [1, 2, 3.0000001], tolerance: 1e-6 });
      
    • Markiert, welche Einträge eines Vektors endliche Zahlen sind.

      Beispiel: [1, 2, Infinity, 3] -> [true, true, false, true]

      Parameter

      Rückgabewert boolean[]

      Ein boolescher Wert pro Eintrag, true wenn er endlich ist

      const flags = bitbybit.vector.finite({ vector: [1, Infinity, 3] });
      
    • Sagt, ob ein Vektor keine Länge hat, das heißt, jeder Eintrag ist genau 0.

      Beispiel: [0,0,0] -> true, [0,0,0.001] -> false

      Parameter

      Rückgabewert boolean

      True, wenn die Länge 0 ist

      const zero = bitbybit.vector.isZero({ vector: [0, 0, 0] });