static public void Seal(this MeshBuilder item, Plane plane, float edge_tolerance, float plane_tolerance) { FaceCloud faces = new FaceCloud(edge_tolerance); PlaneSpace plane_space = plane.GetPlaneSpace(); foreach (LineSegment3 edge in item.GetTriangles().Convert(t => t.GetEdges()).Flatten().Unique()) { if (plane.IsCoplanar(edge, plane_tolerance)) { faces.AddFace(plane_space.ProjectLineSegment(edge).GetFace()); } } item.AddTriangles( plane_space.InflateTriangles(faces.Tesselate()) .Convert(t => t.GetReversedWinding()) ); }
static public IEnumerable <LineSegment2> ProjectLineSegments(this PlaneSpace item, IEnumerable <LineSegment3> line_segments) { return(line_segments.Convert(l => item.ProjectLineSegment(l))); }