Bitbybit Docs
    Preparing search index...

    Class ManifoldTransforms

    Mover, rodar, escalar, espelhar e deformar sólidos Manifold. O kernel combina as transformações de forma preguiçosa, por isso encadeá-las é barato; os ângulos estão em graus, e as rotações rodam em torno da origem, X primeiro, depois Y, depois Z. Cada método devolve um novo sólido.

    Index

    Constructors

    matrix

    • Aplica uma matriz 4x4 a um sólido.

      A matriz está ordenada por colunas, 16 números com a translação nos índices 12 a 14; o kernel lê-a como uma transformação afim 3x4 e ignora a última linha.

      Parameters

      Returns Promise<ManifoldPointer>

      O sólido transformado

      const moved = await bitbybit.manifold.manifold.transforms.transform({ manifold: cube, transform: matrix });
      
    • Aplica uma lista de matrizes 4x4 a um sólido uma após outra, da primeira à última, e devolve o resultado final.

      Uma lista vazia lança um erro.

      Parameters

      Returns Promise<ManifoldPointer>

      O sólido depois de todas as matrizes

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

    multiple

    • Cria uma cópia movida de um sólido por vetor, para dispor repetições.

      Parameters

      Returns Promise<ManifoldPointer[]>

      Uma cópia deslocada por vetor, pela mesma ordem

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

    transforms

    • Move um sólido por distâncias separadas ao longo de X, Y e Z, em unidades do modelo.

      Parameters

      Returns Promise<ManifoldPointer>

      O sólido deslocado

      const moved = await bitbybit.manifold.manifold.transforms.translateXYZ({ manifold: cube, x: 10, y: 0, z: 5 });
      
    • Roda um sólido em torno da origem por ângulos de Euler em graus: primeiro em torno de X, depois Y, depois Z.

      Múltiplos de 90 graus são exatos, sem erro de arredondamento.

      Parameters

      Returns Promise<ManifoldPointer>

      O sólido rodado

      const turned = await bitbybit.manifold.manifold.transforms.rotate({ manifold: cube, vector: [0, 0, 45] });
      
    • Roda um sólido em torno da origem por ângulos separados em graus em torno de X, depois Y, depois Z.

      Múltiplos de 90 graus são exatos, sem erro de arredondamento.

      Parameters

      Returns Promise<ManifoldPointer>

      O sólido rodado

      const turned = await bitbybit.manifold.manifold.transforms.rotateXYZ({ manifold: cube, x: 0, y: 0, z: 45 });
      
    • Move cada vértice de um sólido com uma função sua que altera a posição do vértice no lugar, para dobras, afunilamentos e outras deformações livres.

      A conectividade da malha fica igual e nada verifica se o resultado ainda faz sentido, por isso uma função que dobre a superfície sobre si própria dá um sólido estragado.

      Parameters

      Returns Promise<ManifoldPointer>

      O sólido deformado

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