Beispiel #1
0
        public virtual void Draw(Graphics3D graphics)
        {
            //graphics.DrawPoint(new Vertex(new Vector(0.8, 0.8, 0.8), Color.Orange));
            //graphics.DrawLine(new Vertex(new Vector(0.8, 0.8, 0.8),Color.Orange), new Vertex(new Vector(0, 0, 0), Color.Orange));

            if (Solid)
            {
                var t = graphics.LightEnabled;
                graphics.LightEnabled = false;
                foreach (var facet in Indices)
                {
                    for (int i = 1; i < facet.Length - 1; ++i)
                    {
                        var a = new Vertex(Coordinates[facet[0]], NextColor(new Random(facet[0])));
                        var b = new Vertex(Coordinates[facet[i]], NextColor(new Random(facet[i])));
                        var c = new Vertex(Coordinates[facet[i + 1]], NextColor(new Random(facet[i + 1])));
                        graphics.DrawTriangle(a, b, c);
                    }
                }
                graphics.LightEnabled = t;
            }
            else
            {
                foreach (var facet in Indices)
                {
                    for (int i = 0; i < facet.Length; ++i)
                    {
                        var a = new Vertex(Coordinates[facet[i]]);
                        var b = new Vertex(Coordinates[facet[(i + 1) % facet.Length]]);
                        graphics.DrawLine(a, b);
                    }
                }
            }
        }
Beispiel #2
0
 public virtual void Draw(Graphics3D graphics)
 {
     foreach (var facet in Indices)
     {
         for (int i = 0; i < facet.Length; ++i)
         {
             var a = new Vertex(Coordinates[facet[i]]);
             var b = new Vertex(Coordinates[facet[(i + 1) % facet.Length]]);
             graphics.DrawLine(a, b);
         }
     }
 }
Beispiel #3
0
        public override void Draw(Graphics3D graphics)
        {
            graphics.DrawPoint(new Vertex(new Vector(0.5, 0.5, 0.5), Color.Yellow));
            graphics.DrawLine(new Vertex(new Vector(0.5, 0.5, 0.5), Color.Yellow), new Vertex(new Vector(0, 0, 0), Color.Yellow));
            foreach (var facet in Indices)
            {
                var    verts = facet.Distinct().ToArray();
                Vector norm  = Normals[verts[0]];
                norm = Vector.CrossProduct((Coordinates[facet[0]] - Coordinates[facet[1]]), (Coordinates[facet[1]] - Coordinates[facet[2]]));



                if (Vector.AngleBet((new Vector(0.5, 0.5, 0.5)), norm) > Math.PI / 2)
                {
                    for (int i = 0; i < facet.Length; ++i)
                    {
                        var a = new Vertex(Coordinates[facet[i]], Color.White, Normals[facet[i]]);
                        var b = new Vertex(Coordinates[facet[(i + 1) % facet.Length]], Color.White, Normals[facet[(i + 1) % facet.Length]]);
                        graphics.DrawLine(a, b);
                    }
                }
            }
        }
Beispiel #4
0
 public override void Draw(Graphics3D graphics)
 {
     foreach (var facet in Indices)
     {
         for (int i = 1; i < facet.Length - 1; ++i)
         {
             var a = new Vertex(Coordinates[facet[0]], Color.White, Normals[facet[0]]);
             var b = new Vertex(Coordinates[facet[i]], Color.White, Normals[facet[i]]);
             var c = new Vertex(Coordinates[facet[i + 1]], Color.White, Normals[facet[i + 1]]);
             graphics.DrawTriangle(a, b, c);
         }
         if (VirisbleNormals)
         {
             for (int i = 0; i < Coordinates.Length; ++i)
             {
                 var a = new Vertex(Coordinates[i], Color.White, Normals[i]);
                 var b = new Vertex(Coordinates[i] + Normals[i], Color.White, Normals[i]);
                 graphics.DrawLine(a, b);
             }
         }
     }
 }