//sabemos que el conjunto de Julia de una funcion f(z)=z^2+c está contenida en el disco de centro c y radio 3
        public static List <Complejos.Complejos> MallaJulia(Complejos.Complejos c, double division)
        {
            double origenX = c.Real - 3;
            double finalX  = c.Real + 3;
            double origenY = c.Imaginario + 3;
            double finalY  = c.Imaginario - 3;
            double paso    = 1 / division;
            List <Complejos.Complejos> Malla3 = new List <Complejos.Complejos>();

            while (origenX <= finalX)
            {
                origenX += paso;
                origenY  = c.Imaginario + 3;
                while (origenY <= finalY)
                {
                    Complejos.Complejos malla = new Complejos.Complejos();
                    malla.Real       = origenX;
                    malla.Imaginario = origenY;

                    if (Complejos.Complejos.ModuloComplejo(malla) <= 3)
                    {
                        Malla3.Add(malla);
                    }
                    origenY += paso;
                }
            }
            return(Malla3);
        }
        public static List <Complejos.Complejos> MallaJulia3(Complejos.Complejos c, double division)
        {
            List <Complejos.Complejos> mallaJulia3 = new List <Complejos.Complejos>();

            mallaJulia3 = MallaJulia(c, division);
            double paso    = 1 / division;
            double origenX = c.Real - 3 - paso;
            double finalX  = c.Real + 3;
            double origenY = c.Imaginario + 3;
            double finalY  = c.Imaginario - 3;

            List <Complejos.Complejos> Malla = new List <Complejos.Complejos>();

            while (origenX < finalX)
            {
                origenX += paso;
                origenY  = c.Imaginario + 3;
                while (origenY >= finalY)
                {
                    Complejos.Complejos malla = new Complejos.Complejos();
                    malla.Real       = origenX;
                    malla.Imaginario = origenY;
                    Malla.Add(malla);
                    origenY -= paso;
                }
            }
            return(Malla);
        }
        public static List <Complejos.Complejos> MetodoEscaneado(Complejos.Complejos c, int iterada, double M, int dividido, double altura = 0, double anchura = 0)
        {
            List <Complejos.Complejos> pasoMalla = new List <Complejos.Complejos>();

            pasoMalla = PasoMalla(c, dividido, altura, anchura);
            List <Complejos.Complejos> mallaJulia = new List <Complejos.Complejos>();

            foreach (Complejos.Complejos item in pasoMalla)
            {
                if ((Complejos.Complejos.ModuloComplejo(Complejos.Complejos.JuliaIterada(item, c, iterada)) < M))

                {
                    //Console.WriteLine((Complejos.ModuloComplejo(Complejos.JuliaIterada(item, c, iterada)) < M));
                    mallaJulia.Add(item);
                }
            }
            return(mallaJulia);
        }
        public static List <Complejos.Complejos> MetodoEscaneado2(Complejos.Complejos c, int iterada, double M, int dividido)
        {
            List <Complejos.Complejos> pasoMalla = new List <Complejos.Complejos>();

            pasoMalla = MallaJulia3(c, dividido);
            List <Complejos.Complejos> mallaJulia = new List <Complejos.Complejos>();

            foreach (Complejos.Complejos item in pasoMalla)
            {
                Boolean prueba;
                prueba = (Complejos.Complejos.ModuloComplejo(Complejos.Complejos.JuliaIterada(item, c, iterada)) < M);
                if (prueba)

                {
                    //Console.WriteLine((Complejos.ModuloComplejo(Complejos.JuliaIterada(item, c, iterada)) < M));
                    mallaJulia.Add(item);
                }
            }
            return(mallaJulia);
        }
        public static List <Complejos.Complejos> PasoMalla(Complejos.Complejos origen, int dividido, double altura = 0, double anchura = 0)
        {
            if (anchura == 0 || altura == 0)
            {
                anchura = altura;
            }
            double prueba = dividido;


            double origenX = origen.Real - anchura;

            double origenY   = origen.Imaginario + altura;
            double reinicioY = origenY;
            double finalX    = origenX + 2 * anchura;
            double finalY    = origenY - 2 * altura;
            double pasoX     = (finalX - origenX) / prueba;
            double pasoY     = (finalY - origenY) / prueba;
            //Complejos primerPunto = new Complejos();
            //primerPunto.Real = origen.Real - anchura;
            //primerPunto.Imaginario = origen.Imaginario + altura;
            //double anchuraFinal = primerPunto.Real + 2 * anchura;
            //double AlturaFinal = primerPunto.Imaginario - 2 * altura;

            List <Complejos.Complejos> pasoMalla = new List <Complejos.Complejos>();
            //Complejos malla = new Complejos(0,0);

            int cont  = 0;
            int cont1 = 0;

            while (cont < dividido)
            {
                cont++;
                origenX += pasoX;
                origenY  = 0;
                cont1    = 0;
                origenY  = reinicioY;
                while (cont1 < dividido)
                {
                    Complejos.Complejos malla = new Complejos.Complejos();
                    origenY         += pasoY;
                    malla.Real       = origenX;
                    malla.Imaginario = origenY;
                    pasoMalla.Add(malla);
                    cont1++;
                }
            }



            Convert.ToDouble(dividido);

            /*
             * while (cont < dividido)
             * {
             *  origenX += 1 /prueba;
             *  malla.Real = 3;
             *  malla.Imaginario = origenY;
             *  pasoMalla.Add(malla);
             *  cont++;
             * }
             *
             *
             * do
             * {
             *  Complejos malla = new Complejos();
             *  origenX += pasoX;
             *  malla.Real = origenX;
             *  //malla.Imaginario = origenY;
             * //pasoMalla.Add(malla);
             *  do
             *  {
             *      origenY -= pasoY;
             *
             *      malla.Imaginario = origenY;
             *      pasoMalla.Add(malla);
             *  } while (origenY <= finalY);
             * } while (origenX <= finalX); */

            return(pasoMalla);
        }