Bitbybit Docs
    Preparing search index...

    Class MeshBitByBit

    基于普通三角形网格的几何运算:网格是三角形的列表,每个三角形由三个点组成。这里的方法计算三角形所在的平面、点到平面的距离,以及两个网格相互切割的位置,结果可以是线段、折线或点列表。它们不需要 CAD 内核,因此可以在任何三角化数据上运行。

    Index

    Constructors

    base

    • 测量点到平面的距离,带符号:在法线所指一侧为正,另一侧为负。

      示例:点 [0,5,0] 和法线为 [0,1,0] 的 XZ 平面 -> 5

      Parameters

      Returns number

      以模型单位表示的带符号距离

      const above = bitbybit.mesh.signedDistanceToPlane({ point: [0, 5, 0], plane: { normal: [0, 1, 0], d: 0 } });
      

    mesh

    • 找出两个网格的表面相互穿过的每条线段,将一个网格的每个三角形与另一个的每个三角形测试。

      示例:一个立方体网格和一个球体网格 -> 共同描出其相交曲线的线段

      Parameters

      Returns Segment3[]

      相交线段,顺序不定

      const segments = bitbybit.mesh.meshMeshIntersectionSegments({ mesh1: cubeTriangles, mesh2: sphereTriangles, tolerance: 1e-7 });
      
    • 找出两个网格的表面相互穿过的位置,并将各段连接成折线,曲线成环处闭合。

      示例:一个立方体网格和一个球体网格 -> 两个表面相接处的闭合折线

      Parameters

      Returns Polyline3[]

      以折线表示的相交曲线

      const curves = bitbybit.mesh.meshMeshIntersectionPolylines({ mesh1: cubeTriangles, mesh2: sphereTriangles, tolerance: 1e-7 });
      
    • 找出两个网格的表面相互穿过的位置,每条曲线一个点列表。

      闭合曲线在末尾重复其第一个点,使环显式化。 示例:一个立方体网格和一个球体网格 -> 描出两个表面相接处的点列表

      Parameters

      Returns Point3[][]

      每条相交曲线一个点列表

      const curves = bitbybit.mesh.meshMeshIntersectionPoints({ mesh1: cubeTriangles, mesh2: sphereTriangles, tolerance: 1e-7 });
      

    traingle

    • 找出三角形所在的平面:其单位法线以及沿该法线距原点的距离。

      法线遵循绕三角形各点的右手定则。没有面积的三角形(各点共线)没有平面,给出 undefined。 示例:[[0,0,0], [1,0,0], [0,1,0]] -> { normal: [0,0,1], d: 0 }

      Parameters

      Returns TrianglePlane3

      平面,退化三角形时为 undefined

      const plane = bitbybit.mesh.calculateTrianglePlane({ triangle: [[0, 0, 0], [1, 0, 0], [0, 1, 0]], tolerance: 1e-7 });
      
    • 找出两个三角形相互穿过的线段。

      不接触、平行或位于同一平面的三角形给出 undefined。 示例:XY 平面内的一个三角形和横穿它竖立的一个三角形 -> 它们相交的线段

      Parameters

      Returns Segment3

      相交线段,没有相交时为 undefined

      const cut = bitbybit.mesh.triangleTriangleIntersection({
      triangle1: [[0, 0, 0], [2, 0, 0], [1, 2, 0]],
      triangle2: [[1, -1, 1], [1, 1, 1], [1, 1, -1]],
      tolerance: 1e-7,
      });