Bitbybit Docs
    Bereite Suchindex vor...

    Klasse ManifoldTransforms

    Verschieben, Drehen, Skalieren, Spiegeln und Verformen von Manifold-Volumenkörpern. Der Kernel kombiniert Transformationen verzögert, daher ist ihr Verketten günstig; Winkel sind in Grad, und Drehungen erfolgen um den Ursprung, zuerst X, dann Y, dann Z. Jede Methode gibt einen neuen Volumenkörper zurück.

    Index

    Konstruktoren

    matrix

    • Wendet eine 4x4-Matrix auf einen Volumenkörper an.

      Die Matrix ist spaltenweise gespeichert, 16 Zahlen mit der Verschiebung an den Indizes 12 bis 14; der Kernel liest sie als affine 3x4-Transformation und ignoriert die letzte Zeile.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der transformierte Volumenkörper

      const moved = await bitbybit.manifold.manifold.transforms.transform({ manifold: cube, transform: matrix });
      
    • Wendet eine Liste von 4x4-Matrizen nacheinander auf einen Volumenkörper an, von der ersten bis zur letzten, und gibt das Endergebnis zurück.

      Eine leere Liste löst einen Fehler aus.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der Volumenkörper nach allen Matrizen

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

    multiple

    • Erstellt eine verschobene Kopie eines Volumenkörpers pro Vektor, zum Auslegen von Wiederholungen.

      Parameter

      Rückgabewert Promise<ManifoldPointer[]>

      Eine verschobene Kopie pro Vektor, in derselben Reihenfolge

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

    transforms

    • Skaliert einen Volumenkörper mit einem Faktor pro Achse, um den Ursprung; es nimmt dieselben Eingaben wie scale3D, verwenden Sie also gleiche Faktoren für eine gleichmäßige Skalierung.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der skalierte Volumenkörper

      const bigger = await bitbybit.manifold.manifold.transforms.scale({ manifold: cube, vector: [2, 2, 2] });
      
    • Spiegelt einen Volumenkörper an der Ebene durch den Ursprung mit der gegebenen Normalen.

      Eine Normale der Länge null ergibt einen leeren Volumenkörper.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der gespiegelte Volumenkörper

      const other = await bitbybit.manifold.manifold.transforms.mirror({ manifold: shape, normal: [1, 0, 0] });
      
    • Verschiebt einen Volumenkörper um getrennte Abstände entlang X, Y und Z, in Modelleinheiten.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der verschobene Volumenkörper

      const moved = await bitbybit.manifold.manifold.transforms.translateXYZ({ manifold: cube, x: 10, y: 0, z: 5 });
      
    • Dreht einen Volumenkörper um den Ursprung mit Euler-Winkeln in Grad: zuerst um X, dann Y, dann Z.

      Vielfache von 90 Grad sind exakt, ohne Rundungsfehler.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der gedrehte Volumenkörper

      const turned = await bitbybit.manifold.manifold.transforms.rotate({ manifold: cube, vector: [0, 0, 45] });
      
    • Dreht einen Volumenkörper um den Ursprung mit getrennten Winkeln in Grad um X, dann Y, dann Z.

      Vielfache von 90 Grad sind exakt, ohne Rundungsfehler.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der gedrehte Volumenkörper

      const turned = await bitbybit.manifold.manifold.transforms.rotateXYZ({ manifold: cube, x: 0, y: 0, z: 45 });
      
    • Bewegt jeden Vertex eines Volumenkörpers mit einer eigenen Funktion, die die Vertex-Position an Ort und Stelle ändert, für Biegungen, Verjüngungen und andere freie Verformungen.

      Die Mesh-Konnektivität bleibt gleich und nichts prüft, ob das Ergebnis noch Sinn ergibt, daher ergibt eine Funktion, die die Oberfläche durch sich selbst faltet, einen kaputten Volumenkörper.

      Parameter

      Rückgabewert Promise<ManifoldPointer>

      Der verformte Volumenkörper

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