Esempio n. 1
0
        public VboShape(ref OpenTK.Graphics.OpenGL.PrimitiveType primitives, ref VertexT2dN3dV3d[] vertices, ref uint[] indices, bool useDL)
            : base(useDL)
        {
            PrimitiveMode = primitives;

            VertexArray = new VertexT2dN3dV3d[vertices.Length];
            for (uint i = 0; i < vertices.Length; i++)
            {
                VertexArray[i] = vertices[i];
            }

            IndexArray = new uint[indices.Length];
            for (uint i = 0; i < indices.Length; i++)
            {
                IndexArray[i] = indices[i];
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Read ScanData File
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public static ScanData Read(string file)
        {
            ScanData ret = new ScanData();

            using (StreamReader r = System.IO.File.OpenText(file))
            {
                string   line       = r.ReadLine();
                string[] part       = line.Split(":".ToArray());
                int      slicecount = int.Parse(part[1]);
                for (int i = 0; i < slicecount; i++)
                {
                    line = r.ReadLine();
                    part = line.Split(":".ToArray());
                    ScanLine slice = new ScanLine((int)double.Parse(part[1]));

                    line = r.ReadLine();
                    part = line.Split(":".ToArray());
                    if (part[0] == "DrawAs")
                    {
                        OpenTK.Graphics.OpenGL.PrimitiveType primitive = OpenTK.Graphics.OpenGL.PrimitiveType.Points;
                        Enum.TryParse <OpenTK.Graphics.OpenGL.PrimitiveType>(part[1], true, out primitive);
                        switch (primitive)
                        {
                        case OpenTK.Graphics.OpenGL.PrimitiveType.TriangleStrip:
                        {
                            slice = new ScanSlice(10000);
                            break;
                        }

                        case OpenTK.Graphics.OpenGL.PrimitiveType.LineStrip:
                        {
                            slice.DisplayAsLine = true;
                            break;
                        }

                        default:
                        {
                            slice.DisplayAsLine = false;
                            break;
                        }
                        }
                        line = r.ReadLine();
                        part = line.Split(":".ToArray());
                    }
                    int pointcount = int.Parse(part[1]);

                    for (int j = 0; j < pointcount; j++)
                    {
                        line = r.ReadLine();
                        part = line.Split("|".ToArray());

                        Vector3d pos    = GetVector(part[0]);
                        Vector3d normal = pos.Normalized();
                        try
                        {
                            normal = GetVector(part[1]);
                        }
                        catch { }
                        Color   color = System.Drawing.ColorTranslator.FromHtml(part[2]);
                        Point3D p     = new Point3D(pos, normal, color);
                        slice.Add(p);
                    }
                    ret.Add(slice);
                }
            }
            return(ret);
        }