Bitbybit Docs
    Preparing search index...

    Class ManifoldTransforms

    移动、旋转、缩放、镜像和扭曲 Manifold 实体。内核惰性地组合变换,因此链式调用开销很小;角度以度为单位,旋转绕原点进行,先 X,再 Y,再 Z。每个方法都返回新实体。

    Index

    Constructors

    matrix

    • 对实体从头到尾依次应用一列 4x4 矩阵,并返回最终结果。

      空列表会抛出错误。

      Parameters

      Returns Promise<ManifoldPointer>

      应用所有矩阵后的实体

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

    multiple

    • 为每个向量创建实体的一个移动后的副本,用于布置重复件。

      Parameters

      Returns Promise<ManifoldPointer[]>

      每个向量一个移动后的副本,顺序相同

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

    transforms

    • 按绕 X、然后 Y、最后 Z 各自的角度(以度为单位)使实体绕原点旋转。

      90 度的倍数是精确的,没有舍入误差。

      Parameters

      Returns Promise<ManifoldPointer>

      旋转后的实体

      const turned = await bitbybit.manifold.manifold.transforms.rotateXYZ({ manifold: cube, x: 0, y: 0, z: 45 });
      
    • 用你自己的函数移动实体的每个顶点,该函数就地更改顶点位置,用于弯曲、锥化和其他自由变形。

      网格连接性保持不变,且不检查结果是否仍然合理,因此使曲面穿过自身折叠的函数会给出损坏的实体。

      Parameters

      Returns Promise<ManifoldPointer>

      扭曲后的实体

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