Bitbybit Docs
    Preparing search index...

    Class OCCTTransforms

    Déplacer, tourner, mettre à l'échelle et mettre en miroir des formes OpenCascade, et construire les matrices 4x4 qui décrivent de tels mouvements. Chaque méthode renvoie une nouvelle forme et laisse l'entrée telle quelle. Les angles sont en degrés, les distances en unités du modèle, et un axe de rotation passe par l'origine sauf si une méthode prend un centre. Les matrices sont 16 nombres en ordre colonne (la translation se trouve aux indices 12 à 14) ; une liste de matrices est appliquée de la première à la dernière comme un seul mouvement combiné, ce qui est la façon dont transformByMatrix et les constructeurs ...ToMatrix s'assemblent.

    Index

    Constructors

    by matrix

    • Applique une matrice 4x4, ou une liste de matrices appliquées de la première à la dernière, à une forme.

      La matrice est en ordre colonne, la translation se trouve donc aux indices 12 à 14. Une matrice qui étire ou cisaille est autorisée ; construisez les matrices avec les méthodes ...ToMatrix et combinez-les avec multiplyTransforms. Une matrice que le noyau ne peut pas appliquer lève une erreur.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme transformée

      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] });
    • Applique la même matrice 4x4, ou liste de matrices appliquées de la première à la dernière, à plusieurs formes, comme transformByMatrix le fait pour une seule.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes transformées, dans le même ordre

      const moved = await bitbybit.occt.transforms.transformShapesByMatrix({ shapes: [box, sphere], transformation: matrix });
      
    • Lit le placement qu'une forme porte, la transformation stockée sur elle plutôt qu'intégrée dans sa géométrie, sous forme de matrice plus sa translation, son quaternion de rotation et son échelle uniforme.

      Une forme placée avec align ou via un assemblage porte un tel placement ; la plupart des autres méthodes d'ici intègrent le déplacement dans la géométrie, et une telle forme rapporte l'identité.

      Parameters

      Returns Promise<ShapeTransformInfo>

      La matrice, la translation, le quaternion sous forme [x, y, z, w] et l'échelle

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

    matrix builders

    • Construit la matrice identité, la transformation qui ne change rien, comme point de départ pour en composer d'autres.

      Returns Promise<TransformMatrix>

      La matrice identité, en ordre colonne

      const identity = await bitbybit.occt.transforms.identityTransform();
      
    • Construit une seule matrice à partir d'une translation, de trois angles de rotation en degrés autour de X, Y et Z, et d'une échelle uniforme.

      L'échelle est appliquée en premier, puis les rotations (Z d'abord, puis Y, puis X), puis la translation, ce qui est l'ordre utilisé par les placements d'assemblage. Toute partie omise est prise comme sans changement.

      Parameters

      • inputs: ComposeTransformDto

        La translation, les trois angles de rotation en degrés et le facteur d'échelle

      Returns Promise<TransformMatrix>

      La matrice combinée, en ordre colonne

      const placement = await bitbybit.occt.transforms.composeTransform({ translation: [10, 0, 0], rotation: [0, 90, 0], scale: 1 });
      
    • Replie une liste de matrices en une seule, appliquées de la première à la dernière, de sorte qu'une chaîne de déplacements devient une seule matrice.

      Une matrice seule est renvoyée inchangée et une liste vide donne l'identité.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice combinée, en ordre colonne

      const combined = await bitbybit.occt.transforms.multiplyTransforms({ transformation: [turn, move] });
      
    • Inverse une matrice, donnant la transformation qui la défait : appliquer une matrice puis son inverse remet une forme là où elle était.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice inverse, en ordre colonne

      const back = await bitbybit.occt.transforms.invertTransform({ transformation: placement });
      
    • Construit la matrice d'un déplacement d'un vecteur, en unités du modèle.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice de translation, en ordre colonne

      const move = await bitbybit.occt.transforms.translationToMatrix({ translation: [10, 0, 0] });
      
    • Construit la matrice d'une rotation d'un angle en degrés autour d'un axe, passant par l'origine ou par un point central facultatif.

      La rotation suit la règle de la main droite autour de axis.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice de rotation, en ordre colonne

      const turn = await bitbybit.occt.transforms.rotationAxisAngleToMatrix({ axis: [0, 1, 0], angle: 90, center: [5, 0, 5] });
      
    • Construit la matrice d'une mise à l'échelle uniforme d'un facteur autour de l'origine ou d'un point central facultatif.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice d'échelle, en ordre colonne

      const grow = await bitbybit.occt.transforms.scaleUniformToMatrix({ factor: 2, center: [0, 0, 0] });
      
    • Construit la matrice d'un miroir à travers un point, la transformation que mirrorAboutPoint applique.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice de miroir, en ordre colonne

      const invert = await bitbybit.occt.transforms.mirrorPointToMatrix({ point: [0, 0, 0] });
      
    • Construit la matrice d'un miroir par rapport à une ligne, la transformation que mirror applique : l'axe passant par origin le long de direction.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice de miroir, en ordre colonne

      const flip = await bitbybit.occt.transforms.mirrorAxisToMatrix({ origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Construit la matrice d'un miroir par rapport à un plan, la transformation que mirrorAlongNormal applique : le plan passant par origin avec la normale donnée.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice de miroir, en ordre colonne

      const reflect = await bitbybit.occt.transforms.mirrorPlaneToMatrix({ origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Construit la matrice de rotation d'un quaternion donné sous forme [x, y, z, w].

      Le quaternion est d'abord normalisé, sa longueur n'a donc pas d'importance.

      Parameters

      Returns Promise<TransformMatrix>

      La matrice de rotation, en ordre colonne

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

    on shapes

    • Applique transform à plusieurs formes, chacune avec sa propre translation, son axe de rotation, son angle et son facteur d'échelle.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes transformées, dans le même ordre

      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],
      });
    • Applique rotate à plusieurs formes, chacune autour de son propre axe passant par l'origine et de son propre angle en degrés.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes tournées, dans le même ordre

      const turned = await bitbybit.occt.transforms.rotateShapes({ shapes: [box, sphere], axes: [[0, 1, 0], [1, 0, 0]], angles: [90, 45] });
      
    • Applique rotateAroundCenter à plusieurs formes, chacune avec son propre angle en degrés, son centre et son axe.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes tournées, dans le même ordre

      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]],
      });
    • Applique align à plusieurs formes, chacune avec ses propres repères de départ et d'arrivée.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      • inputs: AlignShapesDto<TopoDSShapePointer>

        Les formes et une origine de départ, une direction de départ, une origine d'arrivée et une direction d'arrivée par forme

      Returns Promise<TopoDSShapePointer[]>

      Les formes alignées, dans le même ordre

      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]],
      });
    • Applique alignAndTranslate à plusieurs formes, chacune avec sa propre direction et son propre centre.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes placées, dans le même ordre

      const placed = await bitbybit.occt.transforms.alignAndTranslateShapes({
      shapes: [profile, profile2],
      directions: [[1, 0, 0], [0, 0, 1]],
      centers: [[10, 0, 0], [0, 0, 10]],
      });
    • Applique translate à plusieurs formes, chacune de son propre vecteur.

      Les deux listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes déplacées, dans le même ordre

      const moved = await bitbybit.occt.transforms.translateShapes({ shapes: [box, sphere], translations: [[10, 0, 0], [-10, 0, 0]] });
      
    • Applique scale à plusieurs formes, chacune uniformément autour de l'origine de son propre facteur.

      Les deux listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes mises à l'échelle, dans le même ordre

      const scaled = await bitbybit.occt.transforms.scaleShapes({ shapes: [box, sphere], factors: [2, 0.5] });
      
    • Applique scale3d à plusieurs formes, chacune avec ses trois propres facteurs et son centre.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes mises à l'échelle, dans le même ordre

      const scaled = await bitbybit.occt.transforms.scale3dShapes({
      shapes: [box, sphere],
      scales: [[1, 2, 1], [2, 2, 2]],
      centers: [[0, 0, 0], [10, 0, 0]],
      });
    • Applique mirror à plusieurs formes, chacune par rapport à son propre axe.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes en miroir, dans le même ordre

      const flipped = await bitbybit.occt.transforms.mirrorShapes({
      shapes: [box, sphere],
      origins: [[0, 0, 0], [0, 0, 0]],
      directions: [[0, 1, 0], [1, 0, 0]],
      });
    • Applique mirrorAlongNormal à plusieurs formes, chacune par rapport à son propre plan.

      Toutes les listes doivent avoir la même longueur, sinon une erreur est levée.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Les formes en miroir, dans le même ordre

      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

    • Met à l'échelle, tourne et déplace une forme en une seule fois : d'abord l'échelle autour de l'origine, puis la rotation autour d'un axe passant par l'origine, puis la translation.

      Comme l'échelle et la rotation se font autour de l'origine, une forme qui ne s'y trouve pas bascule aussi autour d'elle ; déplacez-la d'abord, ou utilisez rotateAroundCenter et scale3d pour un centre choisi.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme transformée

      const moved = await bitbybit.occt.transforms.transform({
      shape: box,
      translation: [10, 0, 0],
      rotationAxis: [0, 1, 0],
      rotationAngle: 45,
      scaleFactor: 2,
      });
    • Tourne une forme autour d'un axe passant par l'origine, d'un angle en degrés.

      La rotation suit la règle de la main droite : le pouce le long de axis, les doigts indiquent le sens positif. Une forme éloignée de l'origine bascule autour d'elle ; rotateAroundCenter tourne plutôt autour d'un point choisi.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme tournée

      const turned = await bitbybit.occt.transforms.rotate({ shape: box, axis: [0, 1, 0], angle: 90 });
      
    • Tourne une forme autour d'un axe passant par un point choisi, d'un angle en degrés.

      La forme est déplacée pour que le point se trouve à l'origine, tournée là selon la règle de la main droite autour de axis, et ramenée.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme tournée

      const turned = await bitbybit.occt.transforms.rotateAroundCenter({ shape: box, angle: 90, center: [5, 0, 5], axis: [0, 1, 0] });
      
    • Déplace une forme pour qu'un point et une direction sur elle atterrissent sur un autre point et une autre direction : le repère fromOrigin avec fromDirection est porté sur toOrigin avec toDirection.

      C'est la façon de poser une forme sur une surface ou de l'orienter le long d'une ligne : la forme est à la fois déplacée et tournée, jamais mise à l'échelle.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme alignée

      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],
      });
    • Déplace une forme pour qu'un repère complet sur elle atterrisse sur un autre repère : un point, sa normale et un axe dans le plan de cette normale sont portés sur leurs cibles.

      Là où align fixe une direction et laisse libre la rotation autour d'elle, ceci fixe aussi la rotation, ce qui compte pour les formes qui ne sont pas rondes autour de leur axe.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme alignée

      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],
      });
    • Tourne une forme pour que son axe Y pointe le long de direction, puis la déplace à center.

      Les formes plates et les primitives de ce paquet sont construites sur le sol avec Y vers le haut, c'est donc le seul appel qui place n'importe laquelle d'entre elles : la direction devient leur nouveau haut, et le centre l'endroit où elles se posent.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme placée

      const placed = await bitbybit.occt.transforms.alignAndTranslate({ shape: profile, direction: [1, 0, 0], center: [10, 0, 0] });
      
    • Met une forme à l'échelle uniformément autour de l'origine d'un facteur.

      Une forme éloignée de l'origine s'en éloigne ou s'en rapproche aussi ; scaleFromCenter met à l'échelle autour d'un point choisi et scale3d met chaque axe à l'échelle de son propre facteur.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme mise à l'échelle

      const bigger = await bitbybit.occt.transforms.scale({ shape: box, factor: 2 });
      
    • Met une forme à l'échelle d'un facteur distinct le long de X, Y et Z, autour d'un point central choisi.

      Des facteurs inégaux étirent la forme, ce qui transforme les cercles en ellipses et peut rendre les opérations ultérieures, comme les congés, plus lentes ou les faire échouer ; gardez les facteurs égaux quand la forme n'a besoin que de grandir.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme mise à l'échelle

      const stretched = await bitbybit.occt.transforms.scale3d({ shape: box, scale: [1, 2, 1], center: [0, 0, 0] });
      
    • Met une forme en miroir par rapport à une ligne : l'axe passant par origin le long de direction.

      Chaque point atterrit aussi loin derrière la ligne qu'il était devant, ce qui en 3D revient à un demi-tour autour de cet axe.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme en miroir

      const flipped = await bitbybit.occt.transforms.mirror({ shape: box, origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Met une forme en miroir par rapport à un plan donné par un point sur lui et sa normale.

      C'est l'image miroir habituelle, celle dont une pièce symétrique a besoin ; le résultat est retourné au sens où une forme main gauche devient une forme main droite.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme en miroir

      const other = await bitbybit.occt.transforms.mirrorAlongNormal({ shape: leftHalf, origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Met une forme à l'échelle uniformément autour d'un point choisi d'un facteur.

      Le point reste où il est et tout le reste s'en éloigne ou s'en rapproche.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme mise à l'échelle

      const bigger = await bitbybit.occt.transforms.scaleFromCenter({ shape: box, factor: 2, center: [5, 0, 5] });
      
    • Met une forme en miroir à travers un point : chaque point de la forme atterrit aussi loin au-delà du point qu'il était avant lui, du côté opposé.

      Le résultat est retourné, comme un miroir plan transforme une main gauche en main droite.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme en miroir

      const inverted = await bitbybit.occt.transforms.mirrorAboutPoint({ shape: box, point: [0, 0, 0] });
      
    • Tourne une forme autour de l'origine selon un quaternion donné sous forme [x, y, z, w].

      Le quaternion est d'abord normalisé, sa longueur n'a donc pas d'importance. Les quaternions sont ce que les bibliothèques d'animation et de physique fournissent, cela évite donc de les convertir en axe et angle.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forme tournée

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