Bitbybit Docs
    Preparing search index...

    Class ManifoldEvaluate

    测量 Manifold 实体并读取其簿记信息:表面积和体积,顶点、三角形和边的数量,边界框,容差,亏格,到另一个实体的间隙,以及内核为每个实体跟踪的 id 和状态。这里没有任何方法会更改实体。

    Index

    Constructors

    basic

    • 测量实体的总表面积,以平方模型单位表示。

      Parameters

      Returns Promise<number>

      表面积

      const area = await bitbybit.manifold.manifold.evaluate.surfaceArea({ manifold: cube });
      
    • 测量实体的体积,以立方模型单位表示。

      Parameters

      Returns Promise<number>

      体积

      const volume = await bitbybit.manifold.manifold.evaluate.volume({ manifold: cube });
      
    • 判断实体是否完全没有三角形,就像不重叠的形状求交的结果那样。

      Parameters

      Returns Promise<boolean>

      当实体为空时为 true

      const empty = await bitbybit.manifold.manifold.evaluate.isEmpty({ manifold: shape });
      
    • 统计实体网格的顶点,即其三角形共享的角。

      Parameters

      Returns Promise<number>

      顶点数量

      const vertices = await bitbybit.manifold.manifold.evaluate.numVert({ manifold: shape });
      
    • 统计实体网格的三角形,即其整个表面。

      Parameters

      Returns Promise<number>

      三角形数量

      const triangles = await bitbybit.manifold.manifold.evaluate.numTri({ manifold: shape });
      
    • 统计实体网格的边,每条由两个三角形共享。

      Parameters

      Returns Promise<number>

      边数量

      const edges = await bitbybit.manifold.manifold.evaluate.numEdge({ manifold: shape });
      
    • 统计实体每个顶点携带的属性通道;仅位置就占三个。

      Parameters

      Returns Promise<number>

      每个顶点的属性数量

      const channels = await bitbybit.manifold.manifold.evaluate.numProp({ manifold: shape });
      
    • 统计实体的属性顶点,至少为 numVert:相邻三角形携带不同属性的顶点(例如带两个法线的锐边)会被存储多次。

      Parameters

      Returns Promise<number>

      属性顶点数量

      const propVertices = await bitbybit.manifold.manifold.evaluate.numPropVert({ manifold: shape });
      
    • 找出围绕实体每个顶点的轴对齐盒。

      Parameters

      Returns Promise<Vector3[]>

      最小角点和最大角点

      const [min, max] = await bitbybit.manifold.manifold.evaluate.boundingBox({ manifold: shape });
      
    • 读取实体的容差,即在生成它的变换和操作中累积的舍入误差。

      比它更薄的三角形被视为退化并移除。

      Parameters

      Returns Promise<number>

      以模型单位表示的容差

      const tolerance = await bitbybit.manifold.manifold.evaluate.tolerance({ manifold: shape });
      
    • 统计穿过实体的孔,就像环有一个而球没有。

      它只对单个相连的块有意义,因此对由多块组成的实体先运行 operations.decompose

      Parameters

      Returns Promise<number>

      贯穿实体的孔的数量

      const holes = await bitbybit.manifold.manifold.evaluate.genus({ manifold: shape });
      
    • 测量两个实体之间的最小距离,搜索不超过 searchLength

      结果在 0 和搜索长度之间。

      Parameters

      Returns Promise<number>

      两者之间的最小间隙

      const gap = await bitbybit.manifold.manifold.evaluate.minGap({ manifold1: cube, manifold2: sphere, searchLength: 100 });
      
    • 读取作为原始体的实体的 id,即 operations.asOriginal 或新构建的实体所具有的;由其他实体经操作生成的实体报告 -1。

      Parameters

      Returns Promise<number>

      原始 id,或 -1

      const id = await bitbybit.manifold.manifold.evaluate.originalID({ manifold: shape });
      
    • 说明实体为何为空:NoError,或者当构建它的网格不是闭合曲面时的原因,例如 NotManifoldInvalidConstruction

      状态会在后续操作中传递,因此损坏的输入不会丢失;空实体仍可能报告 NoError,就像不重叠的形状求交那样。

      Parameters

      Returns Promise<string>

      状态名称

      const status = await bitbybit.manifold.manifold.evaluate.status({ manifold: shape });
      

    spatial

    • 从一点向另一点发射一段射线,并列出它穿过实体表面的每个位置,最近的在前;未命中时为空列表。

      每个命中包含该点、该处的法线、原始面 id,以及它沿线段的距离(按线段长度的比例)。

      Parameters

      Returns Promise<RayHit[]>

      按距离排序的命中

      const hits = await bitbybit.manifold.manifold.evaluate.rayCast({ manifold: shape, origin: [0, 10, 0], endpoint: [0, -10, 0] });