Bitbybit Docs
    Preparing search index...

    Class OCCTTransforms

    Mover, girar, escalar y reflejar formas de OpenCascade, y construir las matrices 4x4 que describen tales movimientos. Cada método devuelve una forma nueva y deja la entrada como estaba. Los ángulos están en grados, las distancias en unidades del modelo, y un eje de rotación pasa por el origen a menos que un método tome un centro. Las matrices son 16 números en orden de columnas (la traslación está en los índices 12 a 14); una lista de matrices se aplica de la primera a la última como un único movimiento combinado, que es como transformByMatrix y los constructores ...ToMatrix encajan entre sí.

    Index

    Constructors

    by matrix

    • Aplica una matriz 4x4, o una lista de matrices aplicadas de la primera a la última, a una forma.

      La matriz está ordenada por columnas, así que la traslación está en los índices 12 a 14. Se admite una matriz que estira o cizalla; construye matrices con los métodos ...ToMatrix y combínalas con multiplyTransforms. Una matriz que el núcleo no puede aplicar lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La 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] });
    • Lee la colocación que lleva una forma, la transformación guardada en ella en lugar de integrada en su geometría, como una matriz más su traslación, cuaternión de rotación y escala uniforme.

      Una forma colocada con align o mediante un ensamblaje lleva tal colocación; la mayoría de los demás métodos de aquí integran el movimiento en la geometría, y tal forma informa la identidad.

      Parameters

      Returns Promise<ShapeTransformInfo>

      La matriz, la traslación, el cuaternión como [x, y, z, w] y la escala

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

    matrix builders

    • Construye la matriz identidad, la transformación que no cambia nada, como punto de partida para componer otras.

      Returns Promise<TransformMatrix>

      La matriz identidad, en orden de columnas

      const identity = await bitbybit.occt.transforms.identityTransform();
      
    • Construye una matriz a partir de una traslación, tres ángulos de rotación en grados alrededor de X, Y y Z, y una escala uniforme.

      La escala se aplica primero, luego las rotaciones (Z primero, luego Y, luego X), luego la traslación, que es el orden que usan las colocaciones de ensamblaje. Cualquier parte omitida se toma como sin cambio.

      Parameters

      • inputs: ComposeTransformDto

        La traslación, los tres ángulos de rotación en grados y el factor de escala

      Returns Promise<TransformMatrix>

      La matriz combinada, en orden de columnas

      const placement = await bitbybit.occt.transforms.composeTransform({ translation: [10, 0, 0], rotation: [0, 90, 0], scale: 1 });
      
    • Reduce una lista de matrices a una sola, aplicadas de la primera a la última, de modo que una cadena de movimientos se convierte en una sola matriz.

      Una sola matriz se devuelve sin cambios y una lista vacía da la identidad.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz combinada, en orden de columnas

      const combined = await bitbybit.occt.transforms.multiplyTransforms({ transformation: [turn, move] });
      
    • Invierte una matriz, dando la transformación que la deshace: aplicar una matriz y luego su inversa devuelve una forma a donde estaba.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz inversa, en orden de columnas

      const back = await bitbybit.occt.transforms.invertTransform({ transformation: placement });
      
    • Construye la matriz de un desplazamiento según un vector, en unidades del modelo.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz de traslación, en orden de columnas

      const move = await bitbybit.occt.transforms.translationToMatrix({ translation: [10, 0, 0] });
      
    • Construye la matriz de una rotación de un ángulo en grados alrededor de un eje, que pasa por el origen o por un punto central opcional.

      La rotación sigue la regla de la mano derecha alrededor de axis.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz de rotación, en orden de columnas

      const turn = await bitbybit.occt.transforms.rotationAxisAngleToMatrix({ axis: [0, 1, 0], angle: 90, center: [5, 0, 5] });
      
    • Construye la matriz de una escala uniforme según un factor respecto al origen o a un punto central opcional.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz de escala, en orden de columnas

      const grow = await bitbybit.occt.transforms.scaleUniformToMatrix({ factor: 2, center: [0, 0, 0] });
      
    • Construye la matriz de una reflexión a través de un punto, la transformación que aplica mirrorAboutPoint.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz de simetría, en orden de columnas

      const invert = await bitbybit.occt.transforms.mirrorPointToMatrix({ point: [0, 0, 0] });
      
    • Construye la matriz de una reflexión a través de una recta, la transformación que aplica mirror: el eje que pasa por origin a lo largo de direction.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz de simetría, en orden de columnas

      const flip = await bitbybit.occt.transforms.mirrorAxisToMatrix({ origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Construye la matriz de una reflexión a través de un plano, la transformación que aplica mirrorAlongNormal: el plano que pasa por origin con la normal dada.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz de simetría, en orden de columnas

      const reflect = await bitbybit.occt.transforms.mirrorPlaneToMatrix({ origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Construye la matriz de rotación de un cuaternión dado como [x, y, z, w].

      El cuaternión se normaliza primero, así que su longitud no importa.

      Parameters

      Returns Promise<TransformMatrix>

      La matriz de rotación, en orden de columnas

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

    on shapes

    • Aplica transform a varias formas, cada una con su propia traslación, eje de rotación, ángulo y factor de escala.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas transformadas, en el mismo orden

      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 varias formas, cada una alrededor de su propio eje que pasa por el origen y según su propio ángulo en grados.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas rotadas, en el mismo orden

      const turned = await bitbybit.occt.transforms.rotateShapes({ shapes: [box, sphere], axes: [[0, 1, 0], [1, 0, 0]], angles: [90, 45] });
      
    • Aplica rotateAroundCenter a varias formas, cada una con su propio ángulo en grados, centro y eje.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas rotadas, en el mismo orden

      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 varias formas, cada una con sus propios sistemas de origen y destino.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      • inputs: AlignShapesDto<TopoDSShapePointer>

        Las formas y un origen de partida, una dirección de partida, un origen de destino y una dirección de destino por forma

      Returns Promise<TopoDSShapePointer[]>

      Las formas alineadas, en el mismo orden

      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 varias formas, cada una con su propia dirección y centro.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas colocadas, en el mismo orden

      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 varias formas, cada una según su propio vector.

      Las dos listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas desplazadas, en el mismo orden

      const moved = await bitbybit.occt.transforms.translateShapes({ shapes: [box, sphere], translations: [[10, 0, 0], [-10, 0, 0]] });
      
    • Aplica scale a varias formas, cada una uniformemente respecto al origen según su propio factor.

      Las dos listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas escaladas, en el mismo orden

      const scaled = await bitbybit.occt.transforms.scaleShapes({ shapes: [box, sphere], factors: [2, 0.5] });
      
    • Aplica scale3d a varias formas, cada una con sus propios tres factores y centro.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas escaladas, en el mismo orden

      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 varias formas, cada una a través de su propio eje.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas reflejadas, en el mismo orden

      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 varias formas, cada una a través de su propio plano.

      Todas las listas deben tener la misma longitud, o se lanza un error.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas reflejadas, en el mismo orden

      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, rota y mueve una forma de una vez: primero la escala respecto al origen, luego la rotación alrededor de un eje que pasa por el origen, luego la traslación.

      Como la escala y la rotación ocurren respecto al origen, una forma que no está ahí también gira alrededor de él; muévela primero, o usa rotateAroundCenter y scale3d para un centro elegido.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma transformada

      const moved = await bitbybit.occt.transforms.transform({
      shape: box,
      translation: [10, 0, 0],
      rotationAxis: [0, 1, 0],
      rotationAngle: 45,
      scaleFactor: 2,
      });
    • Rota una forma alrededor de un eje que pasa por el origen, un ángulo en grados.

      La rotación sigue la regla de la mano derecha: con el pulgar a lo largo de axis, los dedos muestran la dirección positiva. Una forma alejada del origen gira alrededor de él; rotateAroundCenter rota alrededor de un punto elegido en su lugar.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma rotada

      const turned = await bitbybit.occt.transforms.rotate({ shape: box, axis: [0, 1, 0], angle: 90 });
      
    • Rota una forma alrededor de un eje que pasa por un punto elegido, un ángulo en grados.

      La forma se mueve para que el punto quede en el origen, se rota ahí con la regla de la mano derecha alrededor de axis, y se vuelve a mover.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma rotada

      const turned = await bitbybit.occt.transforms.rotateAroundCenter({ shape: box, angle: 90, center: [5, 0, 5], axis: [0, 1, 0] });
      
    • Mueve una forma de modo que un punto y una dirección sobre ella aterrizan en otro punto y otra dirección: el sistema fromOrigin con fromDirection se lleva sobre toOrigin con toDirection.

      Esta es la manera de apoyar una forma sobre una superficie o de apuntarla a lo largo de una recta: la forma se mueve y se gira a la vez, nunca se escala.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma alineada

      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],
      });
    • Mueve una forma de modo que un sistema completo sobre ella aterriza en otro sistema: un punto, su normal y un eje en el plano de esa normal se llevan sobre sus destinos.

      Donde align fija una dirección y deja libre el giro a su alrededor, esto también fija el giro, lo que importa para formas que no son redondas alrededor de su eje.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma alineada

      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],
      });
    • Gira una forma de modo que su eje Y apunte a lo largo de direction, y luego la mueve a center.

      Las formas planas y las primitivas de este paquete se construyen en el suelo con Y hacia arriba, así que esta es la única llamada que coloca cualquiera de ellas: la dirección se convierte en su nuevo arriba, y el centro en donde se sitúan.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma colocada

      const placed = await bitbybit.occt.transforms.alignAndTranslate({ shape: profile, direction: [1, 0, 0], center: [10, 0, 0] });
      
    • Escala una forma uniformemente respecto al origen según un factor.

      Una forma alejada del origen también se aleja de él o se acerca; scaleFromCenter escala respecto a un punto elegido y scale3d escala cada eje según su propio factor.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma escalada

      const bigger = await bitbybit.occt.transforms.scale({ shape: box, factor: 2 });
      
    • Escala una forma según un factor separado a lo largo de X, Y y Z, respecto a un punto central elegido.

      Los factores desiguales estiran la forma, lo que convierte los círculos en elipses y puede hacer que operaciones posteriores, como los redondeos, sean más lentas o fallen; mantén los factores iguales cuando la forma solo necesite crecer.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma escalada

      const stretched = await bitbybit.occt.transforms.scale3d({ shape: box, scale: [1, 2, 1], center: [0, 0, 0] });
      
    • Refleja una forma a través de una recta: el eje que pasa por origin a lo largo de direction.

      Cada punto aterriza tan lejos detrás de la recta como estaba delante, lo que en 3D es lo mismo que media vuelta alrededor de ese eje.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma reflejada

      const flipped = await bitbybit.occt.transforms.mirror({ shape: box, origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Refleja una forma a través de un plano dado por un punto sobre él y su normal.

      Esta es la imagen especular habitual, la que necesita una pieza simétrica; el resultado queda vuelto del revés en el sentido de que una forma de mano izquierda se convierte en una de mano derecha.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma reflejada

      const other = await bitbybit.occt.transforms.mirrorAlongNormal({ shape: leftHalf, origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Escala una forma uniformemente respecto a un punto elegido según un factor.

      El punto se queda donde está y todo lo demás se aleja de él o se acerca.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma escalada

      const bigger = await bitbybit.occt.transforms.scaleFromCenter({ shape: box, factor: 2, center: [5, 0, 5] });
      
    • Refleja una forma a través de un punto: cada punto de la forma aterriza tan lejos más allá del punto como estaba antes de él, en el lado opuesto.

      El resultado queda vuelto del revés, como un espejo plano convierte una mano izquierda en una derecha.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma reflejada

      const inverted = await bitbybit.occt.transforms.mirrorAboutPoint({ shape: box, point: [0, 0, 0] });
      
    • Rota una forma alrededor del origen según un cuaternión dado como [x, y, z, w].

      El cuaternión se normaliza primero, así que su longitud no importa. Los cuaterniones son lo que entregan las bibliotecas de animación y física, así que esto ahorra convertirlos a un eje y un ángulo.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma rotada

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