Bitbybit Docs
    Preparing search index...

    Class Point

    Точки как простые массивы чисел. Точка - это [x, y, z] с осью Y, направленной вверх, той же формы, что и вектор, так что их можно передавать в методы друг друга; 2D-точка - это [x, y]. Каждый метод возвращает новые точки или числа и никогда не изменяет свои входные данные. Углы в градусах, длины в единицах модели.

    Index

    Constructors

    clean

    • Удаляет точку, когда она повторяет стоящую прямо перед ней; та же точка дальше сохраняется.

      При включенном checkFirstAndLast последняя точка, повторяющая первую, тоже отбрасывается. Точки в пределах tolerance друг от друга считаются одинаковыми. Пример: [[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[]

      Точки без подряд идущих повторов

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

    create

    • Строит 3D-точку из ее значений x, y и z.

      Пример: x=10, y=5, z=3 -> [10,5,3]

      Parameters

      Returns Point3

      Точка [x, y, z]

      const point = bitbybit.point.pointXYZ({ x: 10, y: 5, z: 3 });
      
    • Строит 2D-точку из ее значений x и y.

      Пример: x=10, y=5 -> [10,5]

      Parameters

      Returns Point2

      Точка [x, y]

      const point = bitbybit.point.pointXY({ x: 10, y: 5 });
      
    • Расставляет точки вдоль логарифмической спирали в плоскости XY, от начала координат наружу до radius.

      numberPoints задает, сколько точек размещается, phi и widening - как быстро спираль раскрывается, а factor - где вдоль кривой она начинается. У каждой точки z = 0.

      Parameters

      • inputs: SpiralDto

        Число точек, радиус и форма спирали

      Returns Point3[]

      Точки вдоль спирали, от центра наружу

      const points = bitbybit.point.spiral({ phi: 0.9, numberPoints: 100, widening: 3, radius: 10, factor: 1 });
      
    • Расставляет центры сот из шестиугольников в плоскости XY.

      radiusHexagon - расстояние от центра шестиугольника до угла; столбцы идут вдоль X, а ряды вдоль Y, каждый второй ряд сдвинут на половину столбца. orientOnCenter центрирует сетку на начале координат, pointsOnGround кладет ее на плоскость XZ.

      Parameters

      • inputs: HexGridCentersDto

        Размер шестиугольника, сколько столбцов и рядов, и где разместить сетку

      Returns Point3[]

      Центральные точки, ряд за рядом

      const centers = bitbybit.point.hexGrid({ radiusHexagon: 1, nrHexagonsX: 5, nrHexagonsY: 4, orientOnCenter: true, pointsOnGround: false });
      
    • Расставляет соты из шестиугольников, заполняющие заданные ширину и высоту, подбирая размер шестиугольников по числам.

      Результат несет центральные точки и шесть углов каждого шестиугольника. Угол смотрит вверх, если не установлен flatTop; флаги растяжения вытягивают внешние ряды за края, чтобы покрыть прямоугольник без зубчатой границы.

      Parameters

      • inputs: HexGridScaledToFitDto

        Заполняемая область, число шестиугольников, ориентация и параметры размещения

      Returns HexGridData

      Центры и угловые точки каждого шестиугольника

      const grid = bitbybit.point.hexGridScaledToFit({
      width: 10,
      height: 10,
      nrHexagonsInWidth: 5,
      nrHexagonsInHeight: 5,
      flatTop: false,
      centerGrid: true,
      });
    • Находит направление под прямым углом к плоскости через три точки, длиной 1.

      Направление следует правилу правой руки при обходе от первой точки ко второй и к третьей; reverseNormal переворачивает его. У точек на одной прямой нет плоскости, так что результат undefined. Пример: [0,0,0], [1,0,0], [0,1,0] -> [0,0,1]

      Parameters

      Returns Vector3

      Единичная нормаль или undefined, если точки лежат на одной прямой

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

    extract

    • Находит наименьший выровненный по осям бокс, содержащий все точки.

      Результат несет углы min и max, центр, а также ширину (X), высоту (Y) и длину (Z). Пример: точки [[0,0,0], [10,5,3]] -> min [0,0,0], max [10,5,3], центр [5,2.5,1.5]

      Parameters

      Returns BoundingBox

      Ограничивающий бокс с его углами, центром и размерами

      const box = bitbybit.point.boundingBoxOfPoints({ points: [[0, 0, 0], [10, 5, 3], [-2, 1, 1]] });
      
    • Измеряет расстояние от точки до ближайшей точки в списке.

      Пример: точка [0,0,0] и точки [[5,0,0], [10,0,0], [3,0,0]] -> 3

      Parameters

      Returns number

      Расстояние до ближайшей точки в единицах модели

      const nearest = bitbybit.point.closestPointFromPointsDistance({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • Находит позицию ближайшей точки в списке, считая с 1.

      Пример: точка [0,0,0] и точки [[5,0,0], [10,0,0], [3,0,0]] -> 3

      Parameters

      Returns number

      Индекс ближайшей точки, начиная с 1

      const index = bitbybit.point.closestPointFromPointsIndex({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • Находит ближайшую точку в списке к заданной точке.

      Пример: точка [0,0,0] и точки [[5,0,0], [10,0,0], [3,0,0]] -> [3,0,0]

      Parameters

      Returns Point3

      Ближайшая точка

      const nearest = bitbybit.point.closestPointFromPoints({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • Находит среднее точек, что является их центром масс, когда они весят одинаково.

      Пример: [[0,0,0], [10,0,0], [10,10,0]] -> [6.67,3.33,0]

      Parameters

      Returns Point3

      Средняя точка

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

    fillet

    • Находит наибольшее скругление, умещающееся в угол: дуга касается обоих отрезков и остается внутри них.

      Угол - это end; start и center - дальние концы двух отрезков, сходящихся там. Радиус ограничен более коротким отрезком. Прямой или сложенный обратно угол, или отрезок короче tolerance, дает 0.

      Parameters

      • inputs: ThreePointsToleranceDto

        Дальний конец каждого сегмента, общий для них угол и допуск

      Returns number

      Наибольший радиус скругления в единицах модели

      const radius = bitbybit.point.maxFilletRadius({ start: [10, 0, 0], center: [0, 10, 0], end: [0, 0, 0], tolerance: 1e-7 });
      
    • Находит наибольшее скругление в углу, дуга которого касается каждого отрезка в его ближней половине, так что соседние углы полилинии можно скруглить по отдельности без перекрытия дуг.

      Угол - это end; start и center - дальние концы двух отрезков. Прямой или сложенный обратно угол, или отрезок короче tolerance, дает 0.

      Parameters

      • inputs: ThreePointsToleranceDto

        Дальний конец каждого сегмента, общий для них угол и допуск

      Returns number

      Наибольший радиус скругления по правилу половины сегмента в единицах модели

      const radius = bitbybit.point.maxFilletRadiusHalfLine({ start: [10, 0, 0], center: [0, 10, 0], end: [0, 0, 0], tolerance: 1e-7 });
      
    • Находит наибольшее скругление для каждого угла полилинии, каждое ограничено ближней половиной его отрезков, так что скругления никогда не перекрываются.

      При включенном checkLastWithFirst полилиния считается замкнутой, и два угла на концах включаются. Меньше трех точек дают пустой список.

      Parameters

      Returns number[]

      По одному радиусу на каждый угол, в порядке углов

      const radii = bitbybit.point.maxFilletsHalfLine({
      points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]],
      checkLastWithFirst: true,
      tolerance: 1e-7,
      });
    • Находит один радиус скругления, подходящий каждому углу полилинии: наименьший из максимумов по углам по правилу половины отрезка.

      При включенном checkLastWithFirst полилиния считается замкнутой. Меньше трех точек, или любой угол, не допускающий скругления, дают 0.

      Parameters

      Returns number

      Радиус, который подходит для каждого угла, в единицах модели

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

    get

    • Читает значение X точки.

      Пример: [5,10,3] -> 5

      Parameters

      Returns number

      Значение X

    • Читает значение Y точки, то, что направлено вверх.

      Пример: [5,10,3] -> 10

      Parameters

      Returns number

      Значение Y

    • Читает значение Z точки.

      Пример: [5,10,3] -> 3

      Parameters

      Returns number

      Значение Z

    measure

    • Измеряет расстояние по прямой между двумя точками.

      Пример: [0,0,0] к [3,4,0] -> 5

      Parameters

      Returns number

      Расстояние в единицах модели

      const d = bitbybit.point.distance({ startPoint: [0, 0, 0], endPoint: [3, 4, 0] });
      
    • Измеряет расстояние от одной точки до каждой точки в списке.

      Пример: начало [0,0,0] и конечные точки [[3,0,0], [0,4,0], [5,0,0]] -> [3, 4, 5]

      Parameters

      • inputs: StartEndPointsListDto

        Начальная точка и точки, до которых измерять

      Returns number[]

      По одному расстоянию на каждую конечную точку, в том же порядке

      const distances = bitbybit.point.distancesToPoints({ startPoint: [0, 0, 0], endPoints: [[3, 0, 0], [0, 4, 0]] });
      
    • Сообщает, ближе ли друг к другу две точки, чем допуск.

      Пример: [1.0000001, 2, 3] и [1, 2, 3] с допуском 1e-6 -> true

      Parameters

      Returns boolean

      true, если расстояние между ними меньше допуска

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

    sort

    • Сортирует точки по X, затем по Y при равных X, затем по Z.

      Пример: [[5,0,0], [1,0,0], [3,0,0]] -> [[1,0,0], [3,0,0], [5,0,0]]

      Parameters

      Returns Point3[]

      Отсортированная копия точек

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

    transforms

    • Применяет матрицу преобразования, или список матриц по порядку, к одной точке.

      Пример: точка [0,0,0] с переносом на [5,5,0] -> [5,5,0]

      Parameters

      • inputs: TransformPointDto

        Точка и применяемое преобразование

      Returns Point3

      Преобразованная точка

      const moved = bitbybit.point.transformPoint({
      point: [0, 0, 0],
      transformation: bitbybit.transforms.translationXYZ({ translation: [5, 5, 0] }),
      });
    • Применяет одну и ту же матрицу преобразования, или список матриц по порядку, к каждой точке.

      Пример: пять точек с поворотом на 90 градусов -> все пять повернуты вместе

      Parameters

      • inputs: TransformPointsDto

        Точки и преобразование, применяемое к каждой

      Returns Point3[]

      Преобразованные точки, в том же порядке

      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 }),
      });
    • Применяет к каждой точке свое преобразование: первое преобразование к первой точке и так далее.

      Оба списка должны быть одной длины, иначе выбрасывается ошибка. Пример: три точки с тремя переносами -> каждая точка сдвинута своим переносом

      Parameters

      Returns Point3[]

      Преобразованные точки, в том же порядке

      const placed = bitbybit.point.transformsForPoints({
      points: [[0, 0, 0], [1, 0, 0]],
      transformation: bitbybit.transforms.translationsXYZ({ translations: [[0, 1, 0], [0, 2, 0]] }),
      });
    • Сдвигает каждую точку на один и тот же вектор.

      Пример: точки [[0,0,0], [1,0,0]] на [5,5,0] -> [[5,5,0], [6,5,0]]

      Parameters

      • inputs: TranslatePointsDto

        Точки и вектор, на который их переместить

      Returns Point3[]

      Перемещенные точки, в том же порядке

      const moved = bitbybit.point.translatePoints({ points: [[0, 0, 0], [1, 0, 0]], translation: [5, 5, 0] });
      
    • Сдвигает каждую точку на ее собственный вектор: первую точку на первый вектор и так далее.

      Оба списка должны быть одной длины, иначе выбрасывается ошибка. Пример: три точки с тремя векторами -> каждая точка сдвинута своим вектором

      Parameters

      Returns Point3[]

      Перемещенные точки, в том же порядке

      const moved = bitbybit.point.translatePointsWithVectors({
      points: [[0, 0, 0], [1, 0, 0]],
      translations: [[0, 1, 0], [0, 2, 0]],
      });
    • Сдвигает каждую точку на заданные величины x, y и z.

      Пример: точка [0,0,0] с x=10, y=5, z=0 -> [10,5,0]

      Parameters

      • inputs: TranslateXYZPointsDto

        Точки и расстояние перемещения вдоль каждой оси

      Returns Point3[]

      Перемещенные точки, в том же порядке

      const lifted = bitbybit.point.translateXYZPoints({ points: [[0, 0, 0], [1, 0, 0]], x: 0, y: 5, z: 0 });
      
    • Масштабирует точки от центра или к нему, со своим коэффициентом на каждую ось.

      Пример: точка [10,0,0] относительно центра [5,0,0] с коэффициентами [2,1,1] -> [15,0,0]

      Parameters

      • inputs: ScalePointsCenterXYZDto

        Точки, центр масштабирования и коэффициент для каждой оси

      Returns Point3[]

      Масштабированные точки, в том же порядке

      const stretched = bitbybit.point.scalePointsCenterXYZ({
      points: [[10, 0, 0], [0, 10, 0]],
      center: [0, 0, 0],
      scaleXyz: [2, 1, 1],
      });
    • Растягивает точки вдоль одного направления, отсчитывая от центра; расстояния поперек этого направления остаются как есть.

      Пример: точка [10,0,0] от центра [0,0,0] вдоль [1,0,0] с масштабом 2 -> [20,0,0]

      Parameters

      Returns Point3[]

      Растянутые точки, в том же порядке

      const taller = bitbybit.point.stretchPointsDirFromCenter({
      points: [[0, 1, 0], [0, 2, 0]],
      center: [0, 0, 0],
      direction: [0, 1, 0],
      scale: 2,
      });
    • Поворачивает точки вокруг оси, проходящей через центр.

      Угол в градусах, поворот против часовой стрелки, когда ось направлена на вас. Пример: точка [10,0,0] вокруг оси Y через [0,0,0] на 90 -> [0,0,-10]

      Parameters

      • inputs: RotatePointsCenterAxisDto

        Точки, направление оси, центр, через который она проходит, и угол в градусах

      Returns Point3[]

      Повернутые точки, в том же порядке

      const turned = bitbybit.point.rotatePointsCenterAxis({
      points: [[10, 0, 0]],
      center: [0, 0, 0],
      axis: [0, 1, 0],
      angle: 90,
      });
    • Повторяет одну точку заданное число раз в списке.

      Пример: точка [5,5,0] три раза -> [[5,5,0], [5,5,0], [5,5,0]]

      Parameters

      Returns Point3[]

      Список копий

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