Bitbybit Docs
    Preparing search index...

    Class Line

    Прямые линии между двумя точками, хранящиеся как простые объекты вида { start, end }, и форма сегмента [start, end] того же самого. Методы здесь строят линии, измеряют и преобразуют их, конвертируют между двумя формами, размещают точки вдоль них и находят, где две линии пересекаются. Длины в единицах модели.

    Index

    Constructors

    convert

    • Превращает объект линии в его форму отрезка, пару [start, end].

      Пример: { start: [0,0,0], end: [10,5,0] } -> [[0,0,0], [10,5,0]]

      Parameters

      Returns Segment3

      Сегмент

    • Превращает каждый объект линии в его форму отрезка, пару [start, end].

      Пример: три линии -> три отрезка, в том же порядке

      Parameters

      Returns Segment3[]

      По одному сегменту на линию

    • Превращает отрезок, пару [start, end], в объект линии.

      Пример: [[0,0,0], [10,5,0]] -> { start: [0,0,0], end: [10,5,0] }

      Parameters

      Returns Line3

      Линия

    • Превращает каждый отрезок, пару [start, end], в объект линии.

      Пример: три отрезка -> три линии, в том же порядке

      Parameters

      Returns Line3[]

      По одной линии на сегмент

    create

    • Строит объект линии из начальной и конечной точки.

      Пример: начало [0,0,0], конец [10,5,0] -> { start: [0,0,0], end: [10,5,0] }

      Parameters

      • inputs: LinePointsDto

        Начальная и конечная точки

      Returns Line3

      Объект линии

      const line = bitbybit.line.create({ start: [0, 0, 0], end: [10, 5, 0] });
      
    • Строит отрезок, форму линии как пары точек, из начальной и конечной точки.

      Пример: начало [0,0,0], конец [10,5,0] -> [[0,0,0], [10,5,0]]

      Parameters

      • inputs: LinePointsDto

        Начальная и конечная точки

      Returns Segment3

      Сегмент как [start, end]

      const segment = bitbybit.line.createSegment({ start: [0, 0, 0], end: [10, 5, 0] });
      
    • Соединяет каждую точку со следующей линией, так что список точек становится цепочкой линий.

      Пример: [[0,0,0], [5,0,0], [5,5,0]] -> две линии, от [0,0,0] к [5,0,0] и от [5,0,0] к [5,5,0]

      Parameters

      Returns Line3[]

      По одной линии на каждую пару соседних точек

      const chain = bitbybit.line.linesBetweenPoints({ points: [[0, 0, 0], [5, 0, 0], [5, 5, 0]] });
      
    • Объединяет каждую начальную точку с конечной точкой на той же позиции и соединяет их линией.

      Пара, две точки которой совпадают, не дает линии и опускается. Пример: начала [[0,0,0], [5,0,0]] и концы [[0,5,0], [5,5,0]] -> две линии

      Parameters

      • inputs: LineStartEndPointsDto

        Начальные точки и конечные точки, в соответствующем порядке

      Returns Line3[]

      По одной линии на пару, пары нулевой длины пропускаются

      const rungs = bitbybit.line.linesBetweenStartAndEndPoints({
      startPoints: [[0, 0, 0], [5, 0, 0]],
      endPoints: [[0, 5, 0], [5, 5, 0]],
      });

    get

    • Читает начальную точку линии.

      Пример: { start: [0,0,0], end: [10,5,0] } -> [0,0,0]

      Parameters

      Returns Point3

      Начальная точка

    • Читает конечную точку линии.

      Пример: { start: [0,0,0], end: [10,5,0] } -> [10,5,0]

      Parameters

      Returns Point3

      Конечная точка

    • Измеряет прямое расстояние от начала линии до ее конца.

      Пример: { start: [0,0,0], end: [3,4,0] } -> 5

      Parameters

      Returns number

      Длина в единицах модели

    • Находит точку на доле пути вдоль линии: 0 дает начало, 1 - конец, 0.5 - середину.

      Доля вне 0 и 1 продолжается за концы. Пример: { start: [0,0,0], end: [10,0,0] } при 0.5 -> [5,0,0]

      Parameters

      Returns Point3

      Точка на линии

      const middle = bitbybit.line.getPointOnLine({ line: { start: [0, 0, 0], end: [10, 0, 0] }, param: 0.5 });
      

    intersection

    • Находит точку, где пересекаются две линии.

      При включенном checkSegmentsOnly пересечение должно лежать в пределах обоих отрезков; при выключенном линии продолжаются без конца. Параллельные линии, линии, проходящие мимо друг друга без встречи, и отрезки, не достигающие друг друга, дают undefined. Допуск говорит, какая близость считается встречей. Пример: от [0,0,0] к [10,0,0] и от [5,-5,0] к [5,5,0] -> [5,0,0]

      Parameters

      • inputs: LineLineIntersectionDto

        Две линии, оставаться ли в пределах сегментов, и допуск

      Returns Point3

      Точка пересечения или undefined, если ее нет

      const crossing = bitbybit.line.lineLineIntersection({
      line1: { start: [0, 0, 0], end: [10, 0, 0] },
      line2: { start: [5, -5, 0], end: [5, 5, 0] },
      checkSegmentsOnly: true,
      tolerance: 1e-6,
      });

    operations

    • Меняет местами начало и конец линии, так что она идет в другую сторону.

      Пример: { start: [0,0,0], end: [10,5,0] } -> { start: [10,5,0], end: [0,0,0] }

      Parameters

      Returns Line3

      Новая линия, идущая в обратную сторону

    transforms

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

      Пример: { start: [0,0,0], end: [10,0,0] }, сдвинутая на [5,5,0] -> { start: [5,5,0], end: [15,5,0] }

      Parameters

      Returns Line3

      Новая линия с преобразованными концами

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

      Пример: три линии с тремя переносами -> каждая линия сдвинута своим переносом

      Parameters

      • inputs: TransformsLinesDto

        Линии и по одному преобразованию на линию

      Returns Line3[]

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

      const placed = bitbybit.line.transformsForLines({
      lines: [{ start: [0, 0, 0], end: [1, 0, 0] }, { start: [0, 0, 0], end: [0, 1, 0] }],
      transformation: bitbybit.transforms.translationsXYZ({ translations: [[0, 1, 0], [0, 2, 0]] }),
      });