Bitbybit Docs
    Preparing search index...

    Class Point

    Puntos como listas de números simples. Un punto es [x, y, z] con Y apuntando hacia arriba, la misma forma que un vector, así que ambos pueden pasarse a los métodos del otro; un punto 2D es [x, y]. Cada método devuelve puntos o números nuevos y nunca cambia sus entradas. Los ángulos están en grados y las longitudes en unidades del modelo.

    Index

    Constructors

    clean

    • Elimina un punto cuando repite el que está justo antes; el mismo punto más lejos se conserva.

      Con checkFirstAndLast activado, un último punto que repite el primero también se descarta. Los puntos dentro de tolerance entre sí cuentan como el mismo. Ejemplo: [[0,0,0], [0,0,0], [1,0,0], [1,0,0], [2,0,0]] -> [[0,0,0], [1,0,0], [2,0,0]]

      Parameters

      Returns Point3[]

      Los puntos sin repeticiones consecutivas

      const cleaned = bitbybit.point.removeConsecutiveDuplicates({
      points: [[0, 0, 0], [0, 0, 0], [1, 0, 0]],
      tolerance: 1e-7,
      checkFirstAndLast: false,
      });

    create

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

      Ejemplo: x=10, y=5, z=3 -> [10,5,3]

      Parameters

      Returns Point3

      El punto [x, y, z]

      const point = bitbybit.point.pointXYZ({ x: 10, y: 5, z: 3 });
      
    • Construye un punto 2D a partir de sus valores x e y.

      Ejemplo: x=10, y=5 -> [10,5]

      Parameters

      Returns Point2

      El punto [x, y]

      const point = bitbybit.point.pointXY({ x: 10, y: 5 });
      
    • Distribuye puntos a lo largo de una espiral logarítmica en el plano XY, desde el origen hacia fuera hasta radius.

      numberPoints establece cuántos puntos se colocan, phi y widening con qué rapidez se abre la espiral, y factor en qué punto de la curva empieza. Todos los puntos tienen z = 0.

      Parameters

      • inputs: SpiralDto

        El número de puntos, el radio y la forma de la espiral

      Returns Point3[]

      Los puntos a lo largo de la espiral, del centro hacia fuera

      const points = bitbybit.point.spiral({ phi: 0.9, numberPoints: 100, widening: 3, radius: 10, factor: 1 });
      
    • Distribuye los centros de un panal de hexágonos en el plano XY.

      radiusHexagon es la distancia del centro de un hexágono a una esquina; las columnas van a lo largo de X y las filas a lo largo de Y, cada segunda fila desplazada media columna. orientOnCenter centra la cuadrícula en el origen, pointsOnGround la tumba en el plano XZ.

      Parameters

      • inputs: HexGridCentersDto

        El tamaño del hexágono, cuántas columnas y filas, y dónde colocar la cuadrícula

      Returns Point3[]

      Los puntos centrales, fila por fila

      const centers = bitbybit.point.hexGrid({ radiusHexagon: 1, nrHexagonsX: 5, nrHexagonsY: 4, orientOnCenter: true, pointsOnGround: false });
      
    • Distribuye un panal de hexágonos que rellena una anchura y una altura dadas, dimensionando los hexágonos a partir de los recuentos.

      El resultado lleva los puntos centrales y las seis esquinas de cada hexágono. Una esquina apunta hacia arriba salvo que flatTop esté activado; los indicadores de extensión estiran las filas exteriores más allá de los bordes para cubrir el rectángulo sin un borde dentado.

      Parameters

      • inputs: HexGridScaledToFitDto

        El área que rellenar, los números de hexágonos, la orientación y las opciones de colocación

      Returns HexGridData

      Los centros y los puntos de las esquinas de cada hexágono

      const grid = bitbybit.point.hexGridScaledToFit({
      width: 10,
      height: 10,
      nrHexagonsInWidth: 5,
      nrHexagonsInHeight: 5,
      flatTop: false,
      centerGrid: true,
      });
    • Encuentra la dirección perpendicular al plano que pasa por tres puntos, con longitud 1.

      La dirección sigue la regla de la mano derecha yendo del primer punto al segundo y al tercero; reverseNormal la invierte. Los puntos sobre una misma recta no tienen plano, así que el resultado es undefined. Ejemplo: [0,0,0], [1,0,0], [0,1,0] -> [0,0,1]

      Parameters

      Returns Vector3

      La normal unitaria, o undefined cuando los puntos están en una misma línea

      const normal = bitbybit.point.normalFromThreePoints({
      point1: [0, 0, 0],
      point2: [1, 0, 0],
      point3: [0, 1, 0],
      reverseNormal: false,
      });

    extract

    • Encuentra la caja más pequeña alineada con los ejes que contiene todos los puntos.

      El resultado lleva las esquinas mínima y máxima, el centro, y la anchura (X), la altura (Y) y la longitud (Z). Ejemplo: puntos [[0,0,0], [10,5,3]] -> min [0,0,0], max [10,5,3], centro [5,2.5,1.5]

      Parameters

      Returns BoundingBox

      La caja delimitadora con sus esquinas, centro y tamaños

      const box = bitbybit.point.boundingBoxOfPoints({ points: [[0, 0, 0], [10, 5, 3], [-2, 1, 1]] });
      
    • Mide la distancia de un punto al punto más cercano de una lista.

      Ejemplo: punto [0,0,0] y puntos [[5,0,0], [10,0,0], [3,0,0]] -> 3

      Parameters

      Returns number

      La distancia al punto más cercano, en unidades del modelo

      const nearest = bitbybit.point.closestPointFromPointsDistance({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • Encuentra la posición del punto más cercano de una lista, contando desde 1.

      Ejemplo: punto [0,0,0] y puntos [[5,0,0], [10,0,0], [3,0,0]] -> 3

      Parameters

      Returns number

      El índice, empezando en 1, del punto más cercano

      const index = bitbybit.point.closestPointFromPointsIndex({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • Encuentra el punto de una lista más cercano a un punto dado.

      Ejemplo: punto [0,0,0] y puntos [[5,0,0], [10,0,0], [3,0,0]] -> [3,0,0]

      Parameters

      Returns Point3

      El punto más cercano

      const nearest = bitbybit.point.closestPointFromPoints({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • Encuentra la media de los puntos, que es su centro de masas cuando pesan lo mismo.

      Ejemplo: [[0,0,0], [10,0,0], [10,10,0]] -> [6.67,3.33,0]

      Parameters

      Returns Point3

      El punto promedio

      const center = bitbybit.point.averagePoint({ points: [[0, 0, 0], [10, 0, 0], [10, 10, 0]] });
      

    fillet

    • Encuentra el mayor redondeo que cabe en una esquina: el arco toca ambos segmentos y se queda dentro de ellos.

      La esquina es end; start y center son los extremos lejanos de los dos segmentos que se encuentran ahí. El radio está limitado por el segmento más corto. Una esquina recta o plegada sobre sí misma, o un segmento más corto que tolerance, da 0.

      Parameters

      Returns number

      El radio de redondeo máximo, en unidades del modelo

      const radius = bitbybit.point.maxFilletRadius({ start: [10, 0, 0], center: [0, 10, 0], end: [0, 0, 0], tolerance: 1e-7 });
      
    • Encuentra el mayor redondeo en una esquina cuyo arco toca cada segmento dentro de su mitad más cercana, de modo que las esquinas vecinas de una polilínea pueden redondearse cada una sin que los arcos se solapen.

      La esquina es end; start y center son los extremos lejanos de los dos segmentos. Una esquina recta o plegada sobre sí misma, o un segmento más corto que tolerance, da 0.

      Parameters

      Returns number

      El radio de redondeo máximo según la regla del medio segmento, en unidades del modelo

      const radius = bitbybit.point.maxFilletRadiusHalfLine({ start: [10, 0, 0], center: [0, 10, 0], end: [0, 0, 0], tolerance: 1e-7 });
      
    • Encuentra el mayor redondeo para cada esquina de una polilínea, cada uno limitado a la mitad más cercana de sus segmentos para que los redondeos nunca se solapen.

      Con checkLastWithFirst activado, la polilínea se trata como cerrada y se incluyen las dos esquinas de los extremos. Menos de tres puntos dan una lista vacía.

      Parameters

      Returns number[]

      Un radio por esquina, en el orden de las esquinas

      const radii = bitbybit.point.maxFilletsHalfLine({
      points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]],
      checkLastWithFirst: true,
      tolerance: 1e-7,
      });
    • Encuentra un radio de redondeo que cabe en todas las esquinas de una polilínea: el más pequeño de los máximos por esquina bajo la regla del medio segmento.

      Con checkLastWithFirst activado, la polilínea se trata como cerrada. Menos de tres puntos, o cualquier esquina que no admita ningún redondeo, dan 0.

      Parameters

      Returns number

      El radio que cabe en todas las esquinas, en unidades del modelo

      const radius = bitbybit.point.safestPointsMaxFilletHalfLine({
      points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]],
      checkLastWithFirst: true,
      tolerance: 1e-7,
      });

    get

    • Lee el valor Y de un punto, el que apunta hacia arriba.

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

      Parameters

      Returns number

      El valor Y

    measure

    • Mide la distancia en línea recta entre dos puntos.

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

      Parameters

      Returns number

      La distancia en unidades del modelo

      const d = bitbybit.point.distance({ startPoint: [0, 0, 0], endPoint: [3, 4, 0] });
      
    • Mide la distancia de un punto a cada punto de una lista.

      Ejemplo: inicio [0,0,0] y puntos finales [[3,0,0], [0,4,0], [5,0,0]] -> [3, 4, 5]

      Parameters

      Returns number[]

      Una distancia por punto final, en el mismo orden

      const distances = bitbybit.point.distancesToPoints({ startPoint: [0, 0, 0], endPoints: [[3, 0, 0], [0, 4, 0]] });
      
    • Indica si dos puntos están más cerca entre sí que una tolerancia.

      Ejemplo: [1.0000001, 2, 3] y [1, 2, 3] con tolerancia 1e-6 -> true

      Parameters

      Returns boolean

      True cuando la distancia entre ellos está por debajo de la tolerancia

      const same = bitbybit.point.twoPointsAlmostEqual({ point1: [1, 2, 3], point2: [1, 2, 3.0000001], tolerance: 1e-6 });
      

    sort

    • Ordena los puntos por X, luego por Y para X iguales, luego por Z.

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

      Parameters

      Returns Point3[]

      Una copia ordenada de los puntos

      const sorted = bitbybit.point.sortPoints({ points: [[5, 0, 0], [1, 0, 0], [3, 0, 0]] });
      

    transforms

    • Aplica una matriz de transformación, o una lista de ellas en orden, a un punto.

      Ejemplo: punto [0,0,0] con una traslación según [5,5,0] -> [5,5,0]

      Parameters

      Returns Point3

      El punto transformado

      const moved = bitbybit.point.transformPoint({
      point: [0, 0, 0],
      transformation: bitbybit.transforms.translationXYZ({ translation: [5, 5, 0] }),
      });
    • Aplica la misma matriz de transformación, o lista de ellas en orden, a cada punto.

      Ejemplo: cinco puntos con una rotación de 90 grados -> los cinco rotados juntos

      Parameters

      Returns Point3[]

      Los puntos transformados, en el mismo orden

      const rotated = bitbybit.point.transformPoints({
      points: [[1, 0, 0], [2, 0, 0]],
      transformation: bitbybit.transforms.rotationCenterAxis({ center: [0, 0, 0], axis: [0, 1, 0], angle: 90 }),
      });
    • Aplica una transformación distinta a cada punto: la primera transformación al primer punto, y así sucesivamente.

      Las dos listas deben tener la misma longitud, o se lanza un error. Ejemplo: tres puntos con tres traslaciones -> cada punto movido según su propia traslación

      Parameters

      Returns Point3[]

      Los puntos transformados, en el mismo orden

      const placed = bitbybit.point.transformsForPoints({
      points: [[0, 0, 0], [1, 0, 0]],
      transformation: bitbybit.transforms.translationsXYZ({ translations: [[0, 1, 0], [0, 2, 0]] }),
      });
    • Mueve cada punto según el mismo vector.

      Ejemplo: puntos [[0,0,0], [1,0,0]] según [5,5,0] -> [[5,5,0], [6,5,0]]

      Parameters

      Returns Point3[]

      Los puntos desplazados, en el mismo orden

      const moved = bitbybit.point.translatePoints({ points: [[0, 0, 0], [1, 0, 0]], translation: [5, 5, 0] });
      
    • Mueve cada punto según su propio vector: el primer punto según el primer vector, y así sucesivamente.

      Las dos listas deben tener la misma longitud, o se lanza un error. Ejemplo: tres puntos con tres vectores -> cada punto movido según su propio vector

      Parameters

      Returns Point3[]

      Los puntos desplazados, en el mismo orden

      const moved = bitbybit.point.translatePointsWithVectors({
      points: [[0, 0, 0], [1, 0, 0]],
      translations: [[0, 1, 0], [0, 2, 0]],
      });
    • Mueve cada punto según las cantidades x, y y z dadas.

      Ejemplo: punto [0,0,0] con x=10, y=5, z=0 -> [10,5,0]

      Parameters

      Returns Point3[]

      Los puntos desplazados, en el mismo orden

      const lifted = bitbybit.point.translateXYZPoints({ points: [[0, 0, 0], [1, 0, 0]], x: 0, y: 5, z: 0 });
      
    • Escala puntos alejándolos de un centro o acercándolos a él, con su propio factor por eje.

      Ejemplo: punto [10,0,0] respecto al centro [5,0,0] con factores [2,1,1] -> [15,0,0]

      Parameters

      Returns Point3[]

      Los puntos escalados, en el mismo orden

      const stretched = bitbybit.point.scalePointsCenterXYZ({
      points: [[10, 0, 0], [0, 10, 0]],
      center: [0, 0, 0],
      scaleXyz: [2, 1, 1],
      });
    • Estira puntos a lo largo de una dirección, medida desde un centro; las distancias transversales a esa dirección se quedan como están.

      Ejemplo: punto [10,0,0] desde el centro [0,0,0] a lo largo de [1,0,0] con escala 2 -> [20,0,0]

      Parameters

      Returns Point3[]

      Los puntos estirados, en el mismo orden

      const taller = bitbybit.point.stretchPointsDirFromCenter({
      points: [[0, 1, 0], [0, 2, 0]],
      center: [0, 0, 0],
      direction: [0, 1, 0],
      scale: 2,
      });
    • Rota puntos alrededor de un eje que pasa por un centro.

      El ángulo está en grados y gira en sentido antihorario cuando el eje apunta hacia ti. Ejemplo: punto [10,0,0] alrededor del eje Y que pasa por [0,0,0] 90 -> [0,0,-10]

      Parameters

      Returns Point3[]

      Los puntos rotados, en el mismo orden

      const turned = bitbybit.point.rotatePointsCenterAxis({
      points: [[10, 0, 0]],
      center: [0, 0, 0],
      axis: [0, 1, 0],
      angle: 90,
      });
    • Repite un punto un número dado de veces en una lista.

      Ejemplo: punto [5,5,0] tres veces -> [[5,5,0], [5,5,0], [5,5,0]]

      Parameters

      Returns Point3[]

      La lista de copias

      const copies = bitbybit.point.multiplyPoint({ point: [5, 5, 0], amountOfPoints: 3 });