Bitbybit Docs
    Bereite Suchindex vor...

    Klasse MeshBitByBit

    Geometrie auf einfachen Dreiecks-Meshes: ein Mesh ist eine Liste von Dreiecken, jedes aus drei Punkten. Die Methoden hier ermitteln die Ebene eines Dreiecks, den Abstand von einem Punkt zu einer Ebene und wo zwei Meshes einander durchdringen, als Segmente, als Polylinien oder als Punktlisten. Sie brauchen keinen CAD-Kernel und laufen daher auf beliebigen triangulierten Daten.

    Index

    Konstruktoren

    base

    • Misst, wie weit ein Punkt von einer Ebene entfernt ist, mit Vorzeichen: positiv auf der Seite, auf die die Normale zeigt, negativ auf der anderen.

      Beispiel: Punkt [0,5,0] und die XZ-Ebene mit Normale [0,1,0] -> 5

      Parameter

      Rückgabewert number

      Der vorzeichenbehaftete Abstand in Modelleinheiten

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

    mesh

    • Ermittelt jedes Segment, an dem die Oberflächen zweier Meshes einander durchschneiden, indem jedes Dreieck des einen gegen jedes Dreieck des anderen geprüft wird.

      Beispiel: ein Würfel-Mesh und ein Kugel-Mesh -> die Segmente, die zusammen ihre Schnittkurve nachzeichnen

      Parameter

      Rückgabewert Segment3[]

      Die Schnittsegmente, in keiner bestimmten Reihenfolge

      const segments = bitbybit.mesh.meshMeshIntersectionSegments({ mesh1: cubeTriangles, mesh2: sphereTriangles, tolerance: 1e-7 });
      
    • Ermittelt, wo die Oberflächen zweier Meshes einander durchschneiden, und verbindet die Stücke zu Polylinien, geschlossen, wo die Kurve eine Schleife bildet.

      Beispiel: ein Würfel-Mesh und ein Kugel-Mesh -> geschlossene Polylinien, wo sich die beiden Oberflächen treffen

      Parameter

      Rückgabewert Polyline3[]

      Die Schnittkurven als Polylinien

      const curves = bitbybit.mesh.meshMeshIntersectionPolylines({ mesh1: cubeTriangles, mesh2: sphereTriangles, tolerance: 1e-7 });
      
    • Ermittelt, wo die Oberflächen zweier Meshes einander durchschneiden, als eine Punktliste pro Kurve.

      Eine geschlossene Kurve wiederholt ihren ersten Punkt am Ende, damit die Schleife explizit ist. Beispiel: ein Würfel-Mesh und ein Kugel-Mesh -> Punktlisten, die nachzeichnen, wo sich die beiden Oberflächen treffen

      Parameter

      Rückgabewert Point3[][]

      Eine Punktliste pro Schnittkurve

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

    traingle

    • Ermittelt die Ebene, in der ein Dreieck liegt: seine Einheitsnormale und seinen Abstand vom Ursprung entlang dieser Normalen.

      Die Normale folgt der Rechte-Hand-Regel um die Punkte des Dreiecks. Ein Dreieck ohne Fläche, dessen Punkte auf einer Linie liegen, hat keine Ebene und ergibt undefined. Beispiel: [[0,0,0], [1,0,0], [0,1,0]] -> { normal: [0,0,1], d: 0 }

      Parameter

      • inputs: TriangleToleranceDto

        Das Dreieck und die Toleranz, unter der sein Flächeninhalt als null gilt

      Rückgabewert TrianglePlane3

      Die Ebene oder undefined bei einem entarteten Dreieck

      const plane = bitbybit.mesh.calculateTrianglePlane({ triangle: [[0, 0, 0], [1, 0, 0], [0, 1, 0]], tolerance: 1e-7 });
      
    • Ermittelt das Segment, an dem zwei Dreiecke einander durchschneiden.

      Dreiecke, die sich nicht berühren, parallel sind oder in derselben Ebene liegen, ergeben undefined. Beispiel: ein Dreieck in der XY-Ebene und eines, das quer dazu steht -> das Segment, an dem sie sich kreuzen

      Parameter

      Rückgabewert Segment3

      Das Schnittsegment oder undefined, wenn es keines gibt

      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,
      });