Bitbybit Docs
    Preparing search index...

    Class OCCTTransforms

    Перемещение, поворот, масштабирование и отражение форм OpenCascade и построение матриц 4x4, описывающих такие перемещения. Каждый метод возвращает новую форму и оставляет вход как есть. Углы в градусах, расстояния в единицах модели, а ось поворота проходит через начало координат, если метод не принимает центр. Матрицы - это 16 чисел в порядке по столбцам (перенос находится в индексах с 12 по 14); список матриц применяется от первой к последней как одно составное перемещение, и именно так transformByMatrix и построители ...ToMatrix сочетаются друг с другом.

    Index

    Constructors

    by matrix

    • Применяет к форме матрицу 4x4 или список матриц, применяемых от первой к последней.

      Матрица в порядке по столбцам, так что перенос находится в индексах с 12 по 14. Матрица, которая растягивает или сдвигает, допустима; стройте матрицы методами ...ToMatrix и объединяйте их через multiplyTransforms. Матрица, которую ядро не может применить, выбрасывает ошибку.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Преобразованная форма

      const move = await bitbybit.occt.transforms.translationToMatrix({ translation: [10, 0, 0] });
      const turn = await bitbybit.occt.transforms.rotationAxisAngleToMatrix({ axis: [0, 1, 0], angle: 90, center: [0, 0, 0] });
      const placed = await bitbybit.occt.transforms.transformByMatrix({ shape: box, transformation: [turn, move] });
    • Применяет одну и ту же матрицу 4x4, или список матриц, применяемых от первой к последней, к нескольким формам, как transformByMatrix для одной.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

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

      const moved = await bitbybit.occt.transforms.transformShapesByMatrix({ shapes: [box, sphere], transformation: matrix });
      
    • Читает размещение, которое несет форма, преобразование, хранящееся на ней, а не вписанное в ее геометрию, как матрицу плюс ее перенос, кватернион поворота и равномерный масштаб.

      Форма, размещенная через align или через сборку, несет такое размещение; большинство других методов здесь вписывают перемещение в геометрию, и такая форма сообщает единичную матрицу.

      Parameters

      Returns Promise<ShapeTransformInfo>

      Матрица, перенос, кватернион как [x, y, z, w] и масштаб

      const placement = await bitbybit.occt.transforms.getShapeTransform({ shape: movedBox });
      console.log(placement.translation, placement.scale);

    matrix builders

    • Строит единичную матрицу, преобразование, которое ничего не меняет, как отправную точку для составления других.

      Returns Promise<TransformMatrix>

      Единичная матрица, по столбцам

      const identity = await bitbybit.occt.transforms.identityTransform();
      
    • Строит одну матрицу из переноса, трех углов поворота в градусах вокруг X, Y и Z и равномерного масштаба.

      Масштаб применяется первым, затем повороты (сначала Z, затем Y, затем X), затем перенос, что является порядком, используемым размещениями в сборках. Любая опущенная часть считается отсутствием изменения.

      Parameters

      • inputs: ComposeTransformDto

        Перенос, три угла поворота в градусах и коэффициент масштаба

      Returns Promise<TransformMatrix>

      Составная матрица, по столбцам

      const placement = await bitbybit.occt.transforms.composeTransform({ translation: [10, 0, 0], rotation: [0, 90, 0], scale: 1 });
      
    • Сворачивает список матриц в одну, применяемых от первой к последней, так что цепочка перемещений становится одной матрицей.

      Одиночная матрица возвращается без изменений, а пустой список дает единичную матрицу.

      Parameters

      Returns Promise<TransformMatrix>

      Составная матрица, по столбцам

      const combined = await bitbybit.occt.transforms.multiplyTransforms({ transformation: [turn, move] });
      
    • Обращает матрицу, давая преобразование, которое ее отменяет: применение матрицы, а затем ее обратной возвращает форму туда, где она была.

      Parameters

      Returns Promise<TransformMatrix>

      Обратная матрица, по столбцам

      const back = await bitbybit.occt.transforms.invertTransform({ transformation: placement });
      
    • Строит матрицу перемещения на вектор, в единицах модели.

      Parameters

      Returns Promise<TransformMatrix>

      Матрица переноса, по столбцам

      const move = await bitbybit.occt.transforms.translationToMatrix({ translation: [10, 0, 0] });
      
    • Строит матрицу поворота на угол в градусах вокруг оси, через начало координат или через необязательную центральную точку.

      Поворот следует правилу правой руки вокруг axis.

      Parameters

      • inputs: RotationAxisAngleToMatrixDto

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

      Returns Promise<TransformMatrix>

      Матрица поворота, по столбцам

      const turn = await bitbybit.occt.transforms.rotationAxisAngleToMatrix({ axis: [0, 1, 0], angle: 90, center: [5, 0, 5] });
      
    • Строит матрицу равномерного масштаба на коэффициент относительно начала координат или необязательной центральной точки.

      Parameters

      • inputs: ScaleUniformToMatrixDto

        Коэффициент и необязательная точка, относительно которой масштабировать

      Returns Promise<TransformMatrix>

      Матрица масштабирования, по столбцам

      const grow = await bitbybit.occt.transforms.scaleUniformToMatrix({ factor: 2, center: [0, 0, 0] });
      
    • Строит матрицу отражения через точку, преобразование, которое применяет mirrorAboutPoint.

      Parameters

      Returns Promise<TransformMatrix>

      Матрица отражения, по столбцам

      const invert = await bitbybit.occt.transforms.mirrorPointToMatrix({ point: [0, 0, 0] });
      
    • Строит матрицу отражения относительно прямой, преобразование, которое применяет mirror: ось через origin вдоль direction.

      Parameters

      Returns Promise<TransformMatrix>

      Матрица отражения, по столбцам

      const flip = await bitbybit.occt.transforms.mirrorAxisToMatrix({ origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Строит матрицу отражения относительно плоскости, преобразование, которое применяет mirrorAlongNormal: плоскость через origin с заданной нормалью.

      Parameters

      Returns Promise<TransformMatrix>

      Матрица отражения, по столбцам

      const reflect = await bitbybit.occt.transforms.mirrorPlaneToMatrix({ origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Строит матрицу поворота кватерниона, заданного как [x, y, z, w].

      Кватернион сначала нормализуется, так что его длина не имеет значения.

      Parameters

      Returns Promise<TransformMatrix>

      Матрица поворота, по столбцам

      const turn = await bitbybit.occt.transforms.quaternionToMatrix({ quaternion: [0, 0.7071, 0, 0.7071] });
      

    on shapes

    • Применяет transform к нескольким формам, к каждой со своими переносом, осью поворота, углом и коэффициентом масштаба.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      • inputs: TransformShapesDto<TopoDSShapePointer>

        Формы и по одному переносу, оси поворота, углу в градусах и коэффициенту масштаба на форму

      Returns Promise<TopoDSShapePointer[]>

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

      const moved = await bitbybit.occt.transforms.transformShapes({
      shapes: [box, sphere],
      translations: [[10, 0, 0], [-10, 0, 0]],
      rotationAxes: [[0, 1, 0], [0, 1, 0]],
      rotationAngles: [45, 0],
      scaleFactors: [1, 2],
      });
    • Применяет rotate к нескольким формам, к каждой вокруг своей оси через начало координат и на свой угол в градусах.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

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

      const turned = await bitbybit.occt.transforms.rotateShapes({ shapes: [box, sphere], axes: [[0, 1, 0], [1, 0, 0]], angles: [90, 45] });
      
    • Применяет rotateAroundCenter к нескольким формам, к каждой со своими углом в градусах, центром и осью.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

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

      const turned = await bitbybit.occt.transforms.rotateAroundCenterShapes({
      shapes: [box, sphere],
      angles: [90, 45],
      centers: [[5, 0, 5], [0, 0, 0]],
      axes: [[0, 1, 0], [0, 1, 0]],
      });
    • Применяет align к нескольким формам, к каждой со своими исходной и целевой системами координат.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      • inputs: AlignShapesDto<TopoDSShapePointer>

        Формы и по одной исходной точке, исходному направлению, целевой точке и целевому направлению на форму

      Returns Promise<TopoDSShapePointer[]>

      Выровненные формы, в том же порядке

      const placed = await bitbybit.occt.transforms.alignShapes({
      shapes: [cylinder, cylinder2],
      fromOrigins: [[0, 0, 0], [0, 0, 0]],
      fromDirections: [[0, 1, 0], [0, 1, 0]],
      toOrigins: [[10, 0, 0], [20, 0, 0]],
      toDirections: [[1, 0, 0], [0, 0, 1]],
      });
    • Применяет alignAndTranslate к нескольким формам, к каждой со своими направлением и центром.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Размещенные формы, в том же порядке

      const placed = await bitbybit.occt.transforms.alignAndTranslateShapes({
      shapes: [profile, profile2],
      directions: [[1, 0, 0], [0, 0, 1]],
      centers: [[10, 0, 0], [0, 0, 10]],
      });
    • Применяет translate к нескольким формам, к каждой на свой вектор.

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

      Parameters

      Returns Promise<TopoDSShapePointer[]>

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

      const moved = await bitbybit.occt.transforms.translateShapes({ shapes: [box, sphere], translations: [[10, 0, 0], [-10, 0, 0]] });
      
    • Применяет scale к нескольким формам, к каждой равномерно относительно начала координат на свой коэффициент.

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

      Parameters

      Returns Promise<TopoDSShapePointer[]>

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

      const scaled = await bitbybit.occt.transforms.scaleShapes({ shapes: [box, sphere], factors: [2, 0.5] });
      
    • Применяет scale3d к нескольким формам, к каждой со своими тремя коэффициентами и центром.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

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

      const scaled = await bitbybit.occt.transforms.scale3dShapes({
      shapes: [box, sphere],
      scales: [[1, 2, 1], [2, 2, 2]],
      centers: [[0, 0, 0], [10, 0, 0]],
      });
    • Применяет mirror к нескольким формам, к каждой относительно своей оси.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Отраженные формы, в том же порядке

      const flipped = await bitbybit.occt.transforms.mirrorShapes({
      shapes: [box, sphere],
      origins: [[0, 0, 0], [0, 0, 0]],
      directions: [[0, 1, 0], [1, 0, 0]],
      });
    • Применяет mirrorAlongNormal к нескольким формам, к каждой относительно своей плоскости.

      Все списки должны быть одной длины, иначе выбрасывается ошибка.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Отраженные формы, в том же порядке

      const others = await bitbybit.occt.transforms.mirrorAlongNormalShapes({
      shapes: [leftArm, leftLeg],
      origins: [[0, 0, 0], [0, 0, 0]],
      normals: [[1, 0, 0], [1, 0, 0]],
      });

    on single shape

    • Масштабирует, поворачивает и перемещает форму за один раз: сначала масштаб относительно начала координат, затем поворот вокруг оси через начало координат, затем перенос.

      Поскольку масштаб и поворот происходят относительно начала координат, форма, находящаяся не там, также движется вокруг него; сначала переместите ее или используйте rotateAroundCenter и scale3d для выбранного центра.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Преобразованная форма

      const moved = await bitbybit.occt.transforms.transform({
      shape: box,
      translation: [10, 0, 0],
      rotationAxis: [0, 1, 0],
      rotationAngle: 45,
      scaleFactor: 2,
      });
    • Поворачивает форму вокруг оси, проходящей через начало координат, на угол в градусах.

      Поворот следует правилу правой руки: при большом пальце вдоль axis пальцы показывают положительное направление. Форма вдали от начала координат движется вокруг него; rotateAroundCenter вместо этого поворачивает вокруг выбранной точки.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Повернутая форма

      const turned = await bitbybit.occt.transforms.rotate({ shape: box, axis: [0, 1, 0], angle: 90 });
      
    • Поворачивает форму вокруг оси, проходящей через выбранную точку, на угол в градусах.

      Форма перемещается так, чтобы точка оказалась в начале координат, поворачивается там по правилу правой руки вокруг axis и перемещается обратно.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Повернутая форма

      const turned = await bitbybit.occt.transforms.rotateAroundCenter({ shape: box, angle: 90, center: [5, 0, 5], axis: [0, 1, 0] });
      
    • Перемещает форму так, чтобы одна точка и направление на ней попали на другую точку и направление: система координат fromOrigin с fromDirection переносится на toOrigin с toDirection.

      Это способ поставить форму на поверхность или направить ее вдоль линии: форма и перемещается, и поворачивается, но никогда не масштабируется.

      Parameters

      • inputs: AlignDto<TopoDSShapePointer>

        Форма, исходные точка и направление и целевые точка и направление

      Returns Promise<TopoDSShapePointer>

      Выровненная форма

      const standing = await bitbybit.occt.transforms.align({
      shape: cylinder,
      fromOrigin: [0, 0, 0],
      fromDirection: [0, 1, 0],
      toOrigin: [10, 5, 0],
      toDirection: [1, 0, 0],
      });
    • Перемещает форму так, чтобы полная система координат на ней попала на другую систему: точка, ее нормаль и одна ось в плоскости этой нормали переносятся на свои цели.

      Там, где align фиксирует одно направление и оставляет вращение вокруг него свободным, это фиксирует и вращение, что важно для форм, не круглых относительно своей оси.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Выровненная форма

      const placed = await bitbybit.occt.transforms.alignNormAndAxis({
      shape: bracket,
      fromOrigin: [0, 0, 0],
      fromNorm: [0, 1, 0],
      fromAx: [1, 0, 0],
      toOrigin: [10, 0, 0],
      toNorm: [0, 0, 1],
      toAx: [0, 1, 0],
      });
    • Поворачивает форму так, чтобы ее ось Y смотрела вдоль direction, затем перемещает ее в center.

      Плоские формы и примитивы этого пакета строятся на земле с Y вверх, так что это единственный вызов, размещающий любую из них: направление становится их новым верхом, а центр - местом, где они стоят.

      Parameters

      • inputs: AlignAndTranslateDto<TopoDSShapePointer>

        Форма, направление, вдоль которого должна смотреть ее ось Y, и точка, в которую ее переместить

      Returns Promise<TopoDSShapePointer>

      Размещенная форма

      const placed = await bitbybit.occt.transforms.alignAndTranslate({ shape: profile, direction: [1, 0, 0], center: [10, 0, 0] });
      
    • Масштабирует форму равномерно относительно начала координат на коэффициент.

      Форма вдали от начала координат также отдаляется от него или приближается к нему; scaleFromCenter масштабирует относительно выбранной точки, а scale3d масштабирует каждую ось своим коэффициентом.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Масштабированная форма

      const bigger = await bitbybit.occt.transforms.scale({ shape: box, factor: 2 });
      
    • Масштабирует форму отдельным коэффициентом вдоль X, Y и Z, относительно выбранной центральной точки.

      Неравные коэффициенты растягивают форму, что превращает окружности в эллипсы и может замедлить последующие операции, такие как скругления, или привести к их сбою; держите коэффициенты равными, когда форме нужно только вырасти.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Масштабированная форма

      const stretched = await bitbybit.occt.transforms.scale3d({ shape: box, scale: [1, 2, 1], center: [0, 0, 0] });
      
    • Отражает форму относительно прямой: оси через origin вдоль direction.

      Каждая точка попадает настолько же за прямую, насколько была перед ней, что в 3D то же самое, что полуоборот вокруг этой оси.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Отраженная форма

      const flipped = await bitbybit.occt.transforms.mirror({ shape: box, origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Отражает форму относительно плоскости, заданной точкой на ней и ее нормалью.

      Это обычное зеркальное отражение, какое нужно симметричной детали; результат вывернут в том смысле, что левосторонняя форма становится правосторонней.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Отраженная форма

      const other = await bitbybit.occt.transforms.mirrorAlongNormal({ shape: leftHalf, origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Масштабирует форму равномерно относительно выбранной точки на коэффициент.

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

      Parameters

      Returns Promise<TopoDSShapePointer>

      Масштабированная форма

      const bigger = await bitbybit.occt.transforms.scaleFromCenter({ shape: box, factor: 2, center: [5, 0, 5] });
      
    • Отражает форму через точку: каждая точка формы попадает настолько же за точку, насколько была перед ней, с противоположной стороны.

      Результат вывернут, как плоское зеркало превращает левую руку в правую.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Отраженная форма

      const inverted = await bitbybit.occt.transforms.mirrorAboutPoint({ shape: box, point: [0, 0, 0] });
      
    • Поворачивает форму вокруг начала координат на кватернион, заданный как [x, y, z, w].

      Кватернион сначала нормализуется, так что его длина не имеет значения. Кватернионы - это то, что выдают библиотеки анимации и физики, так что это избавляет от преобразования их в ось и угол.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Повернутая форма

      const turned = await bitbybit.occt.transforms.rotateByQuaternion({ shape: box, quaternion: [0, 0.7071, 0, 0.7071] });