Bitbybit Docs
    Preparing search index...

    Class Vector

    Matemáticas vectoriales sobre listas de números simples. Un vector es una lista de números; en 3D es [x, y, z] con Y apuntando hacia arriba, la misma forma que un punto, así que ambos pueden pasarse a los métodos del otro. Cada método devuelve una lista nueva o un número y nunca cambia sus entradas. Los ángulos están en grados.

    Index

    Constructors

    angles

    • Mide el ángulo entre dos vectores en grados, siempre entre 0 y 180.

      El sentido de giro no se tiene en cuenta; usa signedAngleBetween para eso. Ejemplo: [1,0,0] y [0,1,0] -> 90

      Parameters

      Returns number

      Ángulo en grados

      const angle = bitbybit.vector.angleBetween({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Mide el ángulo con signo del primer vector 2D al segundo, en grados de -180 a 180.

      Solo se usan las dos primeras entradas de cada vector; un ángulo positivo gira en sentido antihorario. Ejemplo: [1,0] a [0,1] -> 90, [0,1] a [1,0] -> -90

      Parameters

      Returns number

      Ángulo con signo en grados

      const angle = bitbybit.vector.angleBetweenNormalized2d({ first: [1, 0], second: [0, 1] });
      
    • Mide el ángulo del primer vector al segundo, girando alrededor de una dirección de referencia, en grados de 0 a 360.

      El giro es antihorario cuando el vector de referencia apunta hacia ti. Ejemplo: [1,0,0] a [0,0,-1] alrededor de [0,1,0] -> 90

      Parameters

      Returns number

      Ángulo en grados de 0 a 360

      const angle = bitbybit.vector.positiveAngleBetween({ first: [1, 0, 0], second: [0, 0, -1], reference: [0, 1, 0] });
      
    • Mide el ángulo del primer vector al segundo, girando alrededor de una dirección de referencia, en grados de 0 a 360.

      El giro es antihorario cuando el vector de referencia apunta hacia ti: un giro horario de 30 grados se lee como 330. Ejemplo: [1,0,0] a [0,0,-1] alrededor de [0,1,0] -> 90

      Parameters

      Returns number

      Ángulo en grados de 0 a 360

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

    base

    • Calcula el producto vectorial de dos vectores 3D: un vector perpendicular a ambos.

      Su dirección sigue la regla de la mano derecha y su longitud es el área del paralelogramo que abarcan los dos vectores. Ejemplo: [1,0,0] x [0,1,0] -> [0,0,1]

      Parameters

      Returns number[]

      El vector perpendicular a ambos

      const normal = bitbybit.vector.cross({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Divide cada entrada de un vector entre un número.

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

      Parameters

      Returns number[]

      El vector dividido

      const half = bitbybit.vector.div({ vector: [10, 20, 30], scalar: 2 });
      
    • Resta el primer valor de un vector de su último, lo que para una lista ordenada es su rango.

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

      Parameters

      Returns number

      El último valor menos el primero

      const span = bitbybit.vector.domain({ vector: [1, 3, 5, 9] });
      
    • Calcula el producto escalar de dos vectores: la suma de los productos de las entradas correspondientes.

      Es 0 para vectores perpendiculares y, para vectores unitarios, el coseno del ángulo entre ellos. Ejemplo: [1,2,3] y [4,5,6] -> 32

      Parameters

      Returns number

      El producto escalar

      const projection = bitbybit.vector.dot({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Multiplica cada entrada de un vector por un número.

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

      Parameters

      Returns number[]

      El vector escalado

      const scaled = bitbybit.vector.mul({ vector: [2, 3, 4], scalar: 5 });
      
    • Invierte el signo de cada entrada, de modo que el vector apunta en sentido contrario.

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

      Parameters

      Returns number[]

      El vector negado

      const opposite = bitbybit.vector.neg({ vector: [5, -3, 2] });
      
    • Calcula la longitud al cuadrado de un vector, lo que evita la raíz cuadrada cuando solo se comparan longitudes.

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

      Parameters

      Returns number

      La longitud al cuadrado

      const n2 = bitbybit.vector.normSquared({ vector: [3, 4, 0] });
      
    • Calcula la longitud de un vector.

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

      Parameters

      Returns number

      La longitud en unidades del modelo

      const len = bitbybit.vector.norm({ vector: [3, 4, 0] });
      
    • Escala un vector 3D a longitud 1 conservando su dirección.

      Un vector más corto que 1e-8 no tiene dirección que conservar, así que el resultado es undefined. Ejemplo: [3,4,0] -> [0.6,0.8,0]

      Parameters

      • inputs: VectorDto

        El vector 3D que normalizar

      Returns number[]

      El vector unitario, o undefined para una entrada de longitud cero

      const direction = bitbybit.vector.normalized({ vector: [3, 4, 0] });
      
    • Encuentra el punto a una distancia dada de un punto inicial a lo largo de una dirección.

      La dirección se usa tal como se da, así que una dirección de longitud 2 recorre el doble de distancia. Ejemplo: inicio [0,0,0], dirección [1,0,0], distancia 5 -> [5,0,0]

      Parameters

      • inputs: RayPointDto

        El punto inicial, la dirección y la distancia

      Returns number[]

      El punto en el rayo

      const ahead = bitbybit.vector.onRay({ point: [0, 0, 0], vector: [1, 0, 0], distance: 5 });
      
    • Resta el segundo vector del primero, entrada por entrada.

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

      Parameters

      • inputs: TwoVectorsDto

        El vector del que restar y el vector que restar

      Returns number[]

      El vector de las diferencias

      const diff = bitbybit.vector.sub({ first: [10, 20, 30], second: [1, 2, 3] });
      
    • Suma todos los valores de un vector en un solo número.

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

      Parameters

      Returns number

      El total

      const total = bitbybit.vector.sum({ vector: [1, 2, 3, 4] });
      
    • Calcula la longitud al cuadrado de un vector 3D, lo que evita la raíz cuadrada cuando solo se comparan longitudes.

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

      Parameters

      Returns number

      La longitud al cuadrado

      const l2 = bitbybit.vector.lengthSq({ vector: [3, 4, 0] });
      
    • Calcula la longitud de un vector 3D.

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

      Parameters

      Returns number

      La longitud en unidades del modelo

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

    create

    • Construye un vector 3D a partir de sus valores x, y y z.

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

      Parameters

      Returns Vector3

      El vector [x, y, z]

      const up = bitbybit.vector.vectorXYZ({ x: 0, y: 1, z: 0 });
      
    • Construye un vector 2D a partir de sus valores x e y.

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

      Parameters

      Returns Vector2

      El vector [x, y]

      const right = bitbybit.vector.vectorXY({ x: 1, y: 0 });
      
    • Lista los números enteros desde 0 hasta max, sin incluirlo.

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

      Parameters

      Returns number[]

      Los números de 0 a max - 1

      const indices = bitbybit.vector.range({ max: 5 });
      
    • Lista los números de min a max, avanzando en pasos de step; max se incluye cuando un paso cae sobre él.

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

      Parameters

      • inputs: SpanDto

        El inicio, el final y el paso

      Returns number[]

      Los números del intervalo

      const values = bitbybit.vector.span({ min: 0, max: 10, step: 2.5 });
      
    • Lista nrItems números de min a max espaciados según una curva de suavizado, de modo que se agrupan en un extremo o en ambos.

      Con intervals activado, el resultado contiene los huecos entre vecinos en lugar de los valores mismos. Ejemplo: min=0, max=100, nrItems=5, ease='easeInQuad' -> [0, 6.25, 25, 56.25, 100]

      Parameters

      • inputs: SpanEaseItemsDto

        El inicio, el final, el número de elementos, el suavizado y si devolver los huecos

      Returns number[]

      Los números suavizados, o los huecos entre ellos

      const eased = bitbybit.vector.spanEaseItems({ min: 0, max: 100, nrItems: 5, ease: Bit.Inputs.Math.easeEnum.easeInQuad, intervals: false });
      
    • Lista nrItems números espaciados uniformemente de min a max, ambos incluidos.

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

      Parameters

      Returns number[]

      Los números espaciados uniformemente

      const values = bitbybit.vector.spanLinearItems({ min: 0, max: 10, nrItems: 5 });
      
    • Convierte una lista de cadenas numéricas en números.

      Una cadena que no es un número se convierte en NaN. Ejemplo: ['1', '2.5', '3'] -> [1, 2.5, 3]

      Parameters

      Returns number[]

      Los números

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

    distance

    • Calcula la distancia al cuadrado entre dos vectores, lo que evita la raíz cuadrada cuando solo se comparan distancias.

      Ejemplo: [0,0,0] a [3,4,0] -> 25

      Parameters

      Returns number

      La distancia al cuadrado

      const d2 = bitbybit.vector.distSquared({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Calcula la distancia en línea recta entre dos vectores.

      Ejemplo: [0,0,0] a [3,4,0] -> 5

      Parameters

      Returns number

      La distancia en unidades del modelo

      const distance = bitbybit.vector.dist({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Interpola dos vectores linealmente según una fracción.

      fraction es la parte de first: 1 da first, 0 da second, 0.5 el punto medio. Ejemplo: [0,0,0] y [10,10,10] en 0.5 -> [5,5,5]

      Parameters

      Returns number[]

      El vector mezclado

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

    extract

    • Encuentra el valor más grande de un vector.

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

      Parameters

      Returns number

      La entrada mayor

      const largest = bitbybit.vector.max({ vector: [3, 7, 2, 9, 1] });
      
    • Encuentra el valor más pequeño de un vector.

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

      Parameters

      Returns number

      La entrada menor

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

    remove

    • Elimina todos los vectores repetidos de una lista, conservando la primera aparición de cada uno.

      Dos vectores cuentan como el mismo cuando cada entrada difiere en menos de tolerance. Ejemplo: [[1,2,3], [4,5,6], [1,2,3], [7,8,9]] -> [[1,2,3], [4,5,6], [7,8,9]]

      Parameters

      Returns number[][]

      Los vectores sin repeticiones, en su orden original

      const unique = bitbybit.vector.removeAllDuplicateVectors({
      vectors: [[1, 2, 3], [4, 5, 6], [1, 2, 3]],
      tolerance: 1e-7,
      });
    • Elimina un vector cuando repite el que está justo antes; el mismo vector más lejos se conserva.

      Con checkFirstAndLast activado, un último vector que repite el primero también se descarta, lo que cierra limpiamente un bucle de puntos. Las entradas dentro de tolerance entre sí cuentan como iguales. Ejemplo: [[1,2], [1,2], [3,4], [1,2]] -> [[1,2], [3,4], [1,2]]

      Parameters

      Returns number[][]

      Los vectores sin repeticiones consecutivas

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

    sum

    • Suma una lista de vectores entrada por entrada en un solo vector.

      El resultado tiene tantas entradas como el primer vector. Ejemplo: [[1,2,3], [4,5,6], [7,8,9]] -> [12,15,18]

      Parameters

      Returns number[]

      El vector de las sumas

      const total = bitbybit.vector.addAll({ vectors: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] });
      
    • Suma dos vectores entrada por entrada.

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

      Parameters

      Returns number[]

      El vector de las sumas

      const sum = bitbybit.vector.add({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Indica si todos los valores de una lista de booleanos son true.

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

      Parameters

      Returns boolean

      True cuando ninguna entrada es false

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

    validate

    • Indica si dos vectores son el mismo dentro de una tolerancia, entrada por entrada.

      Vectores de distinta longitud nunca son el mismo. Ejemplo: [1,2,3] y [1.0001,2.0001,3.0001] con tolerancia 0.001 -> true

      Parameters

      Returns boolean

      True cuando cada entrada difiere en menos de la tolerancia

      const same = bitbybit.vector.vectorsTheSame({ vec1: [1, 2, 3], vec2: [1, 2, 3.0000001], tolerance: 1e-6 });
      
    • Marca qué entradas de un vector son números finitos.

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

      Parameters

      Returns boolean[]

      Un booleano por entrada, true cuando es finita

      const flags = bitbybit.vector.finite({ vector: [1, Infinity, 3] });
      
    • Indica si un vector no tiene longitud, es decir, todas sus entradas son exactamente 0.

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

      Parameters

      Returns boolean

      True cuando la longitud es 0

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