Bitbybit Docs
    Preparing search index...

    Class ManifoldTransforms

    Déplacer, tourner, mettre à l'échelle, mettre en miroir et déformer des solides Manifold. Le noyau combine les transformations paresseusement, donc les enchaîner est peu coûteux ; les angles sont en degrés, et les rotations tournent autour de l'origine, X d'abord, puis Y, puis Z. Chaque méthode renvoie un nouveau solide.

    Index

    Constructors

    matrix

    • Applique une matrice 4x4 à un solide.

      La matrice est en ordre colonne, 16 nombres avec la translation aux index 12 à 14 ; le noyau la lit comme une transformation affine 3x4 et ignore la dernière ligne.

      Parameters

      Returns Promise<ManifoldPointer>

      Le solide transformé

      const moved = await bitbybit.manifold.manifold.transforms.transform({ manifold: cube, transform: matrix });
      
    • Applique une liste de matrices 4x4 à un solide l'une après l'autre, de la première à la dernière, et renvoie le résultat final.

      Une liste vide lève une erreur.

      Parameters

      Returns Promise<ManifoldPointer>

      Le solide après toutes les matrices

      const placed = await bitbybit.manifold.manifold.transforms.transforms({ manifold: cube, transforms: [turn, move] });
      

    multiple

    • Fait une copie déplacée d'un solide par vecteur, pour disposer des répétitions.

      Parameters

      Returns Promise<ManifoldPointer[]>

      Une copie déplacée par vecteur, dans le même ordre

      const row = await bitbybit.manifold.manifold.transforms.translateByVectors({ manifold: cube, vectors: [[0, 0, 0], [10, 0, 0], [20, 0, 0]] });
      

    transforms

    • Met un solide à l'échelle d'un facteur par axe, autour de l'origine ; il prend les mêmes entrées que scale3D, utilisez donc des facteurs égaux pour une échelle uniforme.

      Parameters

      Returns Promise<ManifoldPointer>

      Le solide mis à l'échelle

      const bigger = await bitbybit.manifold.manifold.transforms.scale({ manifold: cube, vector: [2, 2, 2] });
      
    • Déplace un solide de distances distinctes le long de X, Y et Z, en unités du modèle.

      Parameters

      Returns Promise<ManifoldPointer>

      Le solide déplacé

      const moved = await bitbybit.manifold.manifold.transforms.translateXYZ({ manifold: cube, x: 10, y: 0, z: 5 });
      
    • Tourne un solide autour de l'origine selon des angles d'Euler en degrés : d'abord autour de X, puis Y, puis Z.

      Les multiples de 90 degrés sont exacts, sans erreur d'arrondi.

      Parameters

      Returns Promise<ManifoldPointer>

      Le solide tourné

      const turned = await bitbybit.manifold.manifold.transforms.rotate({ manifold: cube, vector: [0, 0, 45] });
      
    • Tourne un solide autour de l'origine selon des angles distincts en degrés autour de X, puis Y, puis Z.

      Les multiples de 90 degrés sont exacts, sans erreur d'arrondi.

      Parameters

      Returns Promise<ManifoldPointer>

      Le solide tourné

      const turned = await bitbybit.manifold.manifold.transforms.rotateXYZ({ manifold: cube, x: 0, y: 0, z: 45 });
      
    • Déplace chaque sommet d'un solide avec une fonction de votre choix qui modifie la position du sommet sur place, pour des courbures, des effilements et d'autres déformations libres.

      La connectivité du maillage reste la même et rien ne vérifie que le résultat a encore un sens, une fonction qui replie la surface sur elle-même donne donc un solide cassé.

      Parameters

      Returns Promise<ManifoldPointer>

      Le solide déformé

      const bent = await bitbybit.manifold.manifold.transforms.warp({
      manifold: cube,
      warpFunc: (vert) => { vert[0] += vert[2] * 0.2; },
      });