Exemplo n.º 1
0
        public static List <List <Point> > Tessellate(List <Surface> surfaces, double tolerance, int maxGridLines)
        {
            var rpfactory = new DefaultRenderPackageFactory();
            var rp        = rpfactory.CreateRenderPackage();
            var tp        = new TessellationParameters();

            tp.MaxTessellationDivisions = maxGridLines;
            tp.Tolerance = tolerance;

            foreach (var surface in surfaces)
            {
                surface.Tessellate(rp, tp);
            }
            //grab double components from rp and subset them into points and further into triangles
            List <List <double> > pointdata = MeshHelpers.Split(rp.MeshVertices.ToList(), 3);

            List <Point> points = pointdata.Select(x => Point.ByCoordinates(x[0], x[1], x[2])).ToList();

            List <List <Point> > tris = MeshHelpers.Split(points, 3);

            return(tris);
        }