Ejemplo n.º 1
0
        public void DesenhaYZ(DirectBitmap bmp, Color cor, bool visivel)
        {
            zBuffer(bmp.Width, bmp.Height);
            Vertice v1, v2;

            foreach (Face f in this.Faces)
            {
                for (int i = 0; i < f.length(); i++)
                {
                    v1 = new Vertice(VerticesAtuais[f.getFace(i)].Y + dx, VerticesAtuais[f.getFace(i)].Z + dy, VerticesAtuais[f.getFace(i)].Z);
                    if (i == f.length() - 1)
                    {
                        v2 = new Vertice(VerticesAtuais[f.getFace(0)].Y + dx, VerticesAtuais[f.getFace(0)].Z + dy, VerticesAtuais[f.getFace(0)].Z);
                    }
                    else
                    {
                        v2 = new Vertice(VerticesAtuais[f.getFace(i + 1)].Y + dx, VerticesAtuais[f.getFace(i + 1)].Z + dy, VerticesAtuais[f.getFace(i + 1)].Z);
                    }

                    if (visivel)
                    {
                        f.calculaNormal(VerticesAtuais);
                        if (f.VetNormal.X >= 0)
                        {
                            Primitivas.Bresenhan(v1, v2, bmp, cor);
                        }
                    }
                    else
                    {
                        Primitivas.Bresenhan(v1, v2, bmp, cor);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void DesenhaPtfuga(DirectBitmap bmp, Color cor, bool visivel)
        {
            int     d = -400;
            Vertice v1, v2;

            foreach (Face f in this.Faces)
            {
                for (int i = 0; i < f.length(); i++)
                {
                    v1 = new Vertice(VerticesAtuais[f.getFace(i)].X, VerticesAtuais[f.getFace(i)].Y, VerticesAtuais[f.getFace(i)].Z);
                    if (i == f.length() - 1)
                    {
                        v2 = new Vertice(VerticesAtuais[f.getFace(0)].X, VerticesAtuais[f.getFace(0)].Y, VerticesAtuais[f.getFace(0)].Z);
                    }
                    else
                    {
                        v2 = new Vertice(VerticesAtuais[f.getFace(i + 1)].X, VerticesAtuais[f.getFace(i + 1)].Y, VerticesAtuais[f.getFace(i + 1)].Z);
                    }


                    v1.X = v1.X * d / (v1.Z += d);
                    v1.Y = v1.Y * d / v1.Z;
                    v2.X = v2.X * d / (v2.Z += d);
                    v2.Y = v2.Y * d / v2.Z;

                    v1.X += dx;
                    v1.Y += dy;
                    v2.X += dx;
                    v2.Y += dy;


                    /*if (visivel)
                     * {
                     *  if (f.calculaNormal(VerticesAtuais, NormaisFaces))
                     *      Primitivas.Bresenhan(v1, v2, bmp, cor);
                     * }
                     * else*/
                    Primitivas.Bresenhan(v1, v2, bmp, cor);
                }
            }
        }
Ejemplo n.º 3
0
        public void DesenhaCavaleira(DirectBitmap bmp, Color cor, bool visivel)
        {
            double  alfa = (Math.PI * 45) / 180;
            Vertice v1, v2;

            foreach (Face f in this.Faces)
            {
                for (int i = 0; i < f.length(); i++)
                {
                    v1 = new Vertice(VerticesAtuais[f.getFace(i)].X + dx, VerticesAtuais[f.getFace(i)].Y + dy, VerticesAtuais[f.getFace(i)].Z);
                    if (i == f.length() - 1)
                    {
                        v2 = new Vertice(VerticesAtuais[f.getFace(0)].X + dx, VerticesAtuais[f.getFace(0)].Y + dy, VerticesAtuais[f.getFace(0)].Z);
                    }
                    else
                    {
                        v2 = new Vertice(VerticesAtuais[f.getFace(i + 1)].X + dx, VerticesAtuais[f.getFace(i + 1)].Y + dy, VerticesAtuais[f.getFace(i + 1)].Z);
                    }


                    v1.X = v1.X + (v1.Z * (Math.Cos(alfa)));
                    v1.Y = v1.Y + (v1.Z * (Math.Sin(alfa)));

                    v2.X = v2.X + (v2.Z * (Math.Cos(alfa)));
                    v2.Y = v2.Y + (v2.Z * (Math.Sin(alfa)));


                    /*if (visivel)
                     * {
                     *  if (f.calculaNormal(VerticesAtuais, NormaisFaces))
                     *      Primitivas.Bresenhan(v1, v2, bmp, cor);
                     * }
                     * else*/
                    Primitivas.Bresenhan(v1, v2, bmp, cor);
                }
            }
        }