Bitbybit Docs
    Preparing search index...

    Class Vector

    Calcul vectoriel sur de simples tableaux de nombres. Un vecteur est un tableau de nombres ; en 3D c'est [x, y, z] avec Y pointant vers le haut, la même forme qu'un point, de sorte que les deux peuvent être passés aux méthodes l'un de l'autre. Chaque méthode renvoie un nouveau tableau ou un nombre et ne modifie jamais ses entrées. Les angles sont en degrés.

    Index

    Constructors

    angles

    • Mesure l'angle entre deux vecteurs en degrés, toujours entre 0 et 180.

      Le sens de rotation n'est pas pris en compte ; utilisez signedAngleBetween pour cela. Exemple : [1,0,0] et [0,1,0] -> 90

      Parameters

      Returns number

      L'angle en degrés

      const angle = bitbybit.vector.angleBetween({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Mesure l'angle signé du premier vecteur 2D au second, en degrés de -180 à 180.

      Seules les deux premières composantes de chaque vecteur sont utilisées ; un angle positif tourne dans le sens antihoraire. Exemple : [1,0] vers [0,1] -> 90, [0,1] vers [1,0] -> -90

      Parameters

      Returns number

      L'angle signé en degrés

      const angle = bitbybit.vector.angleBetweenNormalized2d({ first: [1, 0], second: [0, 1] });
      
    • Mesure l'angle du premier vecteur au second, en tournant autour d'une direction de référence, en degrés de 0 à 360.

      La rotation est dans le sens antihoraire quand le vecteur de référence pointe vers vous. Exemple : [1,0,0] vers [0,0,-1] autour de [0,1,0] -> 90

      Parameters

      Returns number

      L'angle en degrés de 0 à 360

      const angle = bitbybit.vector.positiveAngleBetween({ first: [1, 0, 0], second: [0, 0, -1], reference: [0, 1, 0] });
      
    • Mesure l'angle du premier vecteur au second, en tournant autour d'une direction de référence, en degrés de 0 à 360.

      La rotation est dans le sens antihoraire quand le vecteur de référence pointe vers vous : une rotation horaire de 30 degrés se lit 330. Exemple : [1,0,0] vers [0,0,-1] autour de [0,1,0] -> 90

      Parameters

      Returns number

      L'angle en degrés de 0 à 360

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

    base

    • Calcule le produit vectoriel de deux vecteurs 3D : un vecteur perpendiculaire aux deux.

      Sa direction suit la règle de la main droite et sa longueur est l'aire du parallélogramme que les deux vecteurs délimitent. Exemple : [1,0,0] x [0,1,0] -> [0,0,1]

      Parameters

      Returns number[]

      Le vecteur perpendiculaire aux deux

      const normal = bitbybit.vector.cross({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Divise chaque composante d'un vecteur par un nombre.

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

      Parameters

      Returns number[]

      Le vecteur divisé

      const half = bitbybit.vector.div({ vector: [10, 20, 30], scalar: 2 });
      
    • Soustrait la première valeur d'un vecteur de sa dernière, ce qui pour une liste triée est son étendue.

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

      Parameters

      Returns number

      La dernière valeur moins la première valeur

      const span = bitbybit.vector.domain({ vector: [1, 3, 5, 9] });
      
    • Calcule le produit scalaire de deux vecteurs : la somme des produits des composantes correspondantes.

      Il vaut 0 pour des vecteurs perpendiculaires et, pour des vecteurs unitaires, le cosinus de l'angle entre eux. Exemple : [1,2,3] et [4,5,6] -> 32

      Parameters

      Returns number

      Le produit scalaire

      const projection = bitbybit.vector.dot({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Multiplie chaque composante d'un vecteur par un nombre.

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

      Parameters

      Returns number[]

      Le vecteur mis à l'échelle

      const scaled = bitbybit.vector.mul({ vector: [2, 3, 4], scalar: 5 });
      
    • Inverse le signe de chaque composante, de sorte que le vecteur pointe dans le sens opposé.

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

      Parameters

      Returns number[]

      Le vecteur opposé

      const opposite = bitbybit.vector.neg({ vector: [5, -3, 2] });
      
    • Calcule le carré de la longueur d'un vecteur, ce qui évite la racine carrée quand on ne fait que comparer des longueurs.

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

      Parameters

      Returns number

      La longueur au carré

      const n2 = bitbybit.vector.normSquared({ vector: [3, 4, 0] });
      
    • Calcule la longueur d'un vecteur.

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

      Parameters

      Returns number

      La longueur en unités du modèle

      const len = bitbybit.vector.norm({ vector: [3, 4, 0] });
      
    • Met un vecteur 3D à la longueur 1 en gardant sa direction.

      Un vecteur plus court que 1e-8 n'a pas de direction à garder, le résultat est donc undefined. Exemple : [3,4,0] -> [0.6,0.8,0]

      Parameters

      • inputs: VectorDto

        Le vecteur 3D à normaliser

      Returns number[]

      Le vecteur unitaire, ou undefined pour une entrée de longueur nulle

      const direction = bitbybit.vector.normalized({ vector: [3, 4, 0] });
      
    • Trouve le point à une distance donnée d'un point de départ le long d'une direction.

      La direction est utilisée telle quelle, une direction de longueur 2 parcourt donc deux fois la distance. Exemple : départ [0,0,0], direction [1,0,0], distance 5 -> [5,0,0]

      Parameters

      • inputs: RayPointDto

        Le point de départ, la direction et la distance

      Returns number[]

      Le point sur le rayon

      const ahead = bitbybit.vector.onRay({ point: [0, 0, 0], vector: [1, 0, 0], distance: 5 });
      
    • Soustrait le second vecteur du premier, composante par composante.

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

      Parameters

      • inputs: TwoVectorsDto

        Le vecteur duquel soustraire et le vecteur à soustraire

      Returns number[]

      Le vecteur des différences

      const diff = bitbybit.vector.sub({ first: [10, 20, 30], second: [1, 2, 3] });
      
    • Additionne toutes les valeurs d'un vecteur en un seul nombre.

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

      Parameters

      Returns number

      Le total

      const total = bitbybit.vector.sum({ vector: [1, 2, 3, 4] });
      
    • Calcule le carré de la longueur d'un vecteur 3D, ce qui évite la racine carrée quand on ne fait que comparer des longueurs.

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

      Parameters

      Returns number

      La longueur au carré

      const l2 = bitbybit.vector.lengthSq({ vector: [3, 4, 0] });
      
    • Calcule la longueur d'un vecteur 3D.

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

      Parameters

      Returns number

      La longueur en unités du modèle

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

    create

    • Construit un vecteur 3D à partir de ses valeurs x, y et z.

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

      Parameters

      Returns Vector3

      Le vecteur [x, y, z]

      const up = bitbybit.vector.vectorXYZ({ x: 0, y: 1, z: 0 });
      
    • Construit un vecteur 2D à partir de ses valeurs x et y.

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

      Parameters

      Returns Vector2

      Le vecteur [x, y]

      const right = bitbybit.vector.vectorXY({ x: 1, y: 0 });
      
    • Liste les nombres entiers de 0 jusqu'à max, non compris.

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

      Parameters

      Returns number[]

      Les nombres de 0 à max - 1

      const indices = bitbybit.vector.range({ max: 5 });
      
    • Liste les nombres de min à max, par pas de step ; max est inclus quand un pas tombe dessus.

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

      Parameters

      • inputs: SpanDto

        Le début, la fin et le pas

      Returns number[]

      Les nombres de l'intervalle

      const values = bitbybit.vector.span({ min: 0, max: 10, step: 2.5 });
      
    • Liste nrItems nombres de min à max espacés selon une courbe d'accélération, de sorte qu'ils se resserrent à une extrémité ou aux deux.

      Avec intervals actif, le résultat contient les écarts entre voisins au lieu des valeurs elles-mêmes. Exemple : min=0, max=100, nrItems=5, ease='easeInQuad' -> [0, 6.25, 25, 56.25, 100]

      Parameters

      • inputs: SpanEaseItemsDto

        Le début, la fin, le nombre d'éléments, la fonction d'accélération et s'il faut renvoyer les écarts

      Returns number[]

      Les nombres avec accélération, ou les écarts entre eux

      const eased = bitbybit.vector.spanEaseItems({ min: 0, max: 100, nrItems: 5, ease: Bit.Inputs.Math.easeEnum.easeInQuad, intervals: false });
      
    • Liste nrItems nombres régulièrement espacés de min à max, tous deux inclus.

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

      Parameters

      Returns number[]

      Les nombres régulièrement espacés

      const values = bitbybit.vector.spanLinearItems({ min: 0, max: 10, nrItems: 5 });
      
    • Transforme une liste de chaînes de nombres en nombres.

      Une chaîne qui n'est pas un nombre devient NaN. Exemple : ['1', '2.5', '3'] -> [1, 2.5, 3]

      Parameters

      Returns number[]

      Les nombres

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

    distance

    • Calcule le carré de la distance entre deux vecteurs, ce qui évite la racine carrée quand on ne fait que comparer des distances.

      Exemple : [0,0,0] vers [3,4,0] -> 25

      Parameters

      Returns number

      La distance au carré

      const d2 = bitbybit.vector.distSquared({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Calcule la distance en ligne droite entre deux vecteurs.

      Exemple : [0,0,0] vers [3,4,0] -> 5

      Parameters

      Returns number

      La distance en unités du modèle

      const distance = bitbybit.vector.dist({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Mélange deux vecteurs linéairement selon une fraction.

      fraction est la part de first : 1 donne first, 0 donne second, 0.5 le point milieu. Exemple : [0,0,0] et [10,10,10] à 0.5 -> [5,5,5]

      Parameters

      Returns number[]

      Le vecteur interpolé

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

    extract

    • Trouve la plus grande valeur d'un vecteur.

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

      Parameters

      Returns number

      La plus grande composante

      const largest = bitbybit.vector.max({ vector: [3, 7, 2, 9, 1] });
      
    • Trouve la plus petite valeur d'un vecteur.

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

      Parameters

      Returns number

      La plus petite composante

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

    remove

    • Supprime chaque vecteur répété d'une liste, en gardant la première occurrence de chacun.

      Deux vecteurs comptent comme identiques quand chaque composante diffère de moins que tolerance. Exemple : [[1,2,3], [4,5,6], [1,2,3], [7,8,9]] -> [[1,2,3], [4,5,6], [7,8,9]]

      Parameters

      Returns number[][]

      Les vecteurs sans répétitions, dans leur ordre d'origine

      const unique = bitbybit.vector.removeAllDuplicateVectors({
      vectors: [[1, 2, 3], [4, 5, 6], [1, 2, 3]],
      tolerance: 1e-7,
      });
    • Supprime un vecteur quand il répète celui juste avant lui ; le même vecteur plus loin est conservé.

      Avec checkFirstAndLast actif, un dernier vecteur qui répète le premier est aussi supprimé, ce qui ferme proprement une boucle de points. Des composantes à moins de tolerance l'une de l'autre comptent comme égales. Exemple : [[1,2], [1,2], [3,4], [1,2]] -> [[1,2], [3,4], [1,2]]

      Parameters

      Returns number[][]

      Les vecteurs sans répétitions consécutives

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

    sum

    • Additionne une liste de vecteurs composante par composante en un seul vecteur.

      Le résultat a autant de composantes que le premier vecteur. Exemple : [[1,2,3], [4,5,6], [7,8,9]] -> [12,15,18]

      Parameters

      Returns number[]

      Le vecteur des sommes

      const total = bitbybit.vector.addAll({ vectors: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] });
      
    • Additionne deux vecteurs composante par composante.

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

      Parameters

      Returns number[]

      Le vecteur des sommes

      const sum = bitbybit.vector.add({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Indique si chaque valeur d'une liste de booléens est vraie.

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

      Parameters

      Returns boolean

      Vrai quand aucune entrée n'est fausse

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

    validate

    • Indique si deux vecteurs sont identiques à une tolérance près, composante par composante.

      Des vecteurs de longueurs différentes ne sont jamais identiques. Exemple : [1,2,3] et [1.0001,2.0001,3.0001] avec une tolérance de 0.001 -> true

      Parameters

      Returns boolean

      Vrai quand chaque composante diffère de moins que la tolérance

      const same = bitbybit.vector.vectorsTheSame({ vec1: [1, 2, 3], vec2: [1, 2, 3.0000001], tolerance: 1e-6 });
      
    • Marque quelles composantes d'un vecteur sont des nombres finis.

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

      Parameters

      Returns boolean[]

      Un booléen par composante, vrai quand elle est finie

      const flags = bitbybit.vector.finite({ vector: [1, Infinity, 3] });
      
    • Indique si un vecteur n'a pas de longueur, c'est-à-dire que chaque composante vaut exactement 0.

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

      Parameters

      Returns boolean

      Vrai quand la longueur est 0

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