Bitbybit Docs
    Preparing search index...

    Class OCCTTransforms

    Mover, rodar, escalar e espelhar formas OpenCascade, e construir as matrizes 4x4 que descrevem esses movimentos. Cada método devolve uma nova forma e deixa a entrada como estava. Os ângulos estão em graus, as distâncias em unidades do modelo, e um eixo de rotação passa pela origem a menos que um método receba um centro. As matrizes são 16 números por ordem de colunas (a translação fica nos índices 12 a 14); uma lista de matrizes é aplicada da primeira à última como um único movimento combinado, que é como transformByMatrix e os construtores ...ToMatrix se encaixam.

    Index

    Constructors

    by matrix

    • Aplica uma matriz 4x4, ou uma lista de matrizes aplicadas da primeira à última, a uma forma.

      A matriz está ordenada por colunas, por isso a translação fica nos índices 12 a 14. Uma matriz que estica ou cisalha é permitida; construa matrizes com os métodos ...ToMatrix e combine-as com multiplyTransforms. Uma matriz que o kernel não consiga aplicar lança um erro.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma transformada

      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] });
    • Lê a colocação que uma forma transporta, a transformação guardada nela em vez de incorporada na sua geometria, como uma matriz mais a sua translação, quaternião de rotação e escala uniforme.

      Uma forma colocada com align ou através de uma montagem transporta tal colocação; a maioria dos outros métodos aqui incorpora o movimento na geometria, e uma forma dessas reporta a identidade.

      Parameters

      Returns Promise<ShapeTransformInfo>

      A matriz, a translação, o quaternião como [x, y, z, w] e a escala

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

    matrix builders

    • Constrói a matriz identidade, a transformação que não muda nada, como ponto de partida para compor outras.

      Returns Promise<TransformMatrix>

      A matriz identidade, por colunas

      const identity = await bitbybit.occt.transforms.identityTransform();
      
    • Constrói uma só matriz a partir de uma translação, três ângulos de rotação em graus em torno de X, Y e Z, e uma escala uniforme.

      A escala é aplicada primeiro, depois as rotações (Z primeiro, depois Y, depois X), depois a translação, que é a ordem que as colocações de montagem usam. Qualquer parte omitida é tomada como nenhuma alteração.

      Parameters

      • inputs: ComposeTransformDto

        A translação, os três ângulos de rotação em graus e o fator de escala

      Returns Promise<TransformMatrix>

      A matriz combinada, por colunas

      const placement = await bitbybit.occt.transforms.composeTransform({ translation: [10, 0, 0], rotation: [0, 90, 0], scale: 1 });
      
    • Combina uma lista de matrizes numa só, aplicadas da primeira à última, de modo que uma cadeia de movimentos se torna uma única matriz.

      Uma matriz única é devolvida sem alteração e uma lista vazia dá a identidade.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz combinada, por colunas

      const combined = await bitbybit.occt.transforms.multiplyTransforms({ transformation: [turn, move] });
      
    • Inverte uma matriz, dando a transformação que a desfaz: aplicar uma matriz e depois a sua inversa põe uma forma de volta onde estava.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz inversa, por colunas

      const back = await bitbybit.occt.transforms.invertTransform({ transformation: placement });
      
    • Constrói a matriz de um movimento por um vetor, em unidades do modelo.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz de translação, por colunas

      const move = await bitbybit.occt.transforms.translationToMatrix({ translation: [10, 0, 0] });
      
    • Constrói a matriz de uma rotação por um ângulo em graus em torno de um eixo, pela origem ou por um ponto central opcional.

      A rotação segue a regra da mão direita em torno de axis.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz de rotação, por colunas

      const turn = await bitbybit.occt.transforms.rotationAxisAngleToMatrix({ axis: [0, 1, 0], angle: 90, center: [5, 0, 5] });
      
    • Constrói a matriz de uma escala uniforme por um fator em torno da origem ou de um ponto central opcional.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz de escala, por colunas

      const grow = await bitbybit.occt.transforms.scaleUniformToMatrix({ factor: 2, center: [0, 0, 0] });
      
    • Constrói a matriz de um espelhamento através de um ponto, a transformação que mirrorAboutPoint aplica.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz de espelho, por colunas

      const invert = await bitbybit.occt.transforms.mirrorPointToMatrix({ point: [0, 0, 0] });
      
    • Constrói a matriz de um espelhamento em relação a uma linha, a transformação que mirror aplica: o eixo que passa por origin ao longo de direction.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz de espelho, por colunas

      const flip = await bitbybit.occt.transforms.mirrorAxisToMatrix({ origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Constrói a matriz de um espelhamento em relação a um plano, a transformação que mirrorAlongNormal aplica: o plano que passa por origin com a normal dada.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz de espelho, por colunas

      const reflect = await bitbybit.occt.transforms.mirrorPlaneToMatrix({ origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Constrói a matriz de rotação de um quaternião dado como [x, y, z, w].

      O quaternião é primeiro normalizado, por isso o seu comprimento não importa.

      Parameters

      Returns Promise<TransformMatrix>

      A matriz de rotação, por colunas

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

    on shapes

    • Aplica transform a várias formas, cada uma com a sua própria translação, eixo de rotação, ângulo e fator de escala.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas transformadas, pela mesma ordem

      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],
      });
    • Aplica rotate a várias formas, cada uma em torno do seu próprio eixo pela origem e pelo seu próprio ângulo em graus.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas rodadas, pela mesma ordem

      const turned = await bitbybit.occt.transforms.rotateShapes({ shapes: [box, sphere], axes: [[0, 1, 0], [1, 0, 0]], angles: [90, 45] });
      
    • Aplica rotateAroundCenter a várias formas, cada uma com o seu próprio ângulo em graus, centro e eixo.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas rodadas, pela mesma ordem

      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]],
      });
    • Aplica align a várias formas, cada uma com os seus próprios referenciais de origem e de destino.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      • inputs: AlignShapesDto<TopoDSShapePointer>

        As formas e uma origem de partida, uma direção de partida, uma origem de chegada e uma direção de chegada por forma

      Returns Promise<TopoDSShapePointer[]>

      As formas alinhadas, pela mesma ordem

      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]],
      });
    • Aplica alignAndTranslate a várias formas, cada uma com a sua própria direção e centro.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas colocadas, pela mesma ordem

      const placed = await bitbybit.occt.transforms.alignAndTranslateShapes({
      shapes: [profile, profile2],
      directions: [[1, 0, 0], [0, 0, 1]],
      centers: [[10, 0, 0], [0, 0, 10]],
      });
    • Aplica translate a várias formas, cada uma pelo seu próprio vetor.

      As duas listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas deslocadas, pela mesma ordem

      const moved = await bitbybit.occt.transforms.translateShapes({ shapes: [box, sphere], translations: [[10, 0, 0], [-10, 0, 0]] });
      
    • Aplica scale a várias formas, cada uma uniformemente em torno da origem pelo seu próprio fator.

      As duas listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas escaladas, pela mesma ordem

      const scaled = await bitbybit.occt.transforms.scaleShapes({ shapes: [box, sphere], factors: [2, 0.5] });
      
    • Aplica scale3d a várias formas, cada uma com os seus próprios três fatores e centro.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas escaladas, pela mesma ordem

      const scaled = await bitbybit.occt.transforms.scale3dShapes({
      shapes: [box, sphere],
      scales: [[1, 2, 1], [2, 2, 2]],
      centers: [[0, 0, 0], [10, 0, 0]],
      });
    • Aplica mirror a várias formas, cada uma em relação ao seu próprio eixo.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas espelhadas, pela mesma ordem

      const flipped = await bitbybit.occt.transforms.mirrorShapes({
      shapes: [box, sphere],
      origins: [[0, 0, 0], [0, 0, 0]],
      directions: [[0, 1, 0], [1, 0, 0]],
      });
    • Aplica mirrorAlongNormal a várias formas, cada uma em relação ao seu próprio plano.

      Todas as listas têm de ter o mesmo comprimento, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas espelhadas, pela mesma ordem

      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

    • Escala, roda e move uma forma de uma só vez: primeiro a escala em torno da origem, depois a rotação em torno de um eixo que passa pela origem, depois a translação.

      Como a escala e a rotação acontecem em torno da origem, uma forma que não esteja lá também gira à volta dela; mova-a primeiro, ou use rotateAroundCenter e scale3d para um centro escolhido.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma transformada

      const moved = await bitbybit.occt.transforms.transform({
      shape: box,
      translation: [10, 0, 0],
      rotationAxis: [0, 1, 0],
      rotationAngle: 45,
      scaleFactor: 2,
      });
    • Roda uma forma em torno de um eixo que passa pela origem, por um ângulo em graus.

      A rotação segue a regra da mão direita: com o polegar ao longo de axis, os dedos mostram a direção positiva. Uma forma afastada da origem gira à volta dela; rotateAroundCenter roda em vez disso em torno de um ponto escolhido.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma rodada

      const turned = await bitbybit.occt.transforms.rotate({ shape: box, axis: [0, 1, 0], angle: 90 });
      
    • Roda uma forma em torno de um eixo que passa por um ponto escolhido, por um ângulo em graus.

      A forma é movida para que o ponto fique na origem, rodada aí com a regra da mão direita em torno de axis, e movida de volta.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma rodada

      const turned = await bitbybit.occt.transforms.rotateAroundCenter({ shape: box, angle: 90, center: [5, 0, 5], axis: [0, 1, 0] });
      
    • Move uma forma de modo que um ponto e uma direção nela aterrem noutro ponto e direção: o referencial fromOrigin com fromDirection é levado para toOrigin com toDirection.

      Esta é a maneira de assentar uma forma numa superfície ou apontá-la ao longo de uma linha: a forma é movida e rodada, nunca escalada.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma alinhada

      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],
      });
    • Move uma forma de modo que um referencial completo nela aterre noutro referencial: um ponto, a sua normal e um eixo no plano dessa normal são levados para os seus destinos.

      Onde align fixa uma direção e deixa a rotação em torno dela livre, isto fixa também a rotação, o que importa para formas que não são redondas em torno do seu eixo.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma alinhada

      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],
      });
    • Roda uma forma de modo que o seu eixo Y aponte ao longo de direction, e depois move-a para center.

      As formas planas e as primitivas deste pacote são construídas no chão com Y para cima, por isso esta é a única chamada que coloca qualquer uma delas: a direção torna-se o seu novo para cima, e o centro onde ficam.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma colocada

      const placed = await bitbybit.occt.transforms.alignAndTranslate({ shape: profile, direction: [1, 0, 0], center: [10, 0, 0] });
      
    • Escala uma forma uniformemente em torno da origem por um fator.

      Uma forma afastada da origem também se afasta ou se aproxima dela; scaleFromCenter escala em torno de um ponto escolhido e scale3d escala cada eixo pelo seu próprio fator.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma escalada

      const bigger = await bitbybit.occt.transforms.scale({ shape: box, factor: 2 });
      
    • Escala uma forma por um fator separado ao longo de X, Y e Z, em torno de um ponto central escolhido.

      Fatores desiguais esticam a forma, o que transforma círculos em elipses e pode tornar operações posteriores, como arredondamentos, mais lentas ou fazê-las falhar; mantenha os fatores iguais quando a forma só precisa de crescer.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma escalada

      const stretched = await bitbybit.occt.transforms.scale3d({ shape: box, scale: [1, 2, 1], center: [0, 0, 0] });
      
    • Espelha uma forma em relação a uma linha: o eixo que passa por origin ao longo de direction.

      Cada ponto aterra tão atrás da linha quanto estava à frente, o que em 3D é o mesmo que uma meia volta em torno desse eixo.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma espelhada

      const flipped = await bitbybit.occt.transforms.mirror({ shape: box, origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Espelha uma forma em relação a um plano dado por um ponto nele e pela sua normal.

      Esta é a imagem espelhada habitual, a que uma peça simétrica precisa; o resultado fica virado do avesso no sentido em que uma forma de mão esquerda se torna uma de mão direita.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma espelhada

      const other = await bitbybit.occt.transforms.mirrorAlongNormal({ shape: leftHalf, origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Escala uma forma uniformemente em torno de um ponto escolhido por um fator.

      O ponto fica onde está e tudo o resto se afasta dele ou se aproxima dele.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma escalada

      const bigger = await bitbybit.occt.transforms.scaleFromCenter({ shape: box, factor: 2, center: [5, 0, 5] });
      
    • Espelha uma forma através de um ponto: cada ponto da forma aterra tão para lá do ponto quanto estava antes dele, do lado oposto.

      O resultado fica virado do avesso, da maneira como um espelho plano transforma uma mão esquerda numa mão direita.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma espelhada

      const inverted = await bitbybit.occt.transforms.mirrorAboutPoint({ shape: box, point: [0, 0, 0] });
      
    • Roda uma forma em torno da origem por um quaternião dado como [x, y, z, w].

      O quaternião é primeiro normalizado, por isso o seu comprimento não importa. Os quaterniões são o que as bibliotecas de animação e de física entregam, por isso isto poupa convertê-los num eixo e num ângulo.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma rodada

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