Vistas de página en total

viernes, 18 de noviembre de 2011

Fractal Mandelbrot en C#

Anteriormente hice una publicación de el fractal conocido como el fractal de mandelbrot, en una aplicación en c++ builder, en esta aplicación utilizo el mismo algoritmo pero implementado en c#.
 aquí les dejo el código de dicha aplicación:



int maxx, maxy, Limite, Pasos, Terminar;
        double PasoX, PasoY, PosX, PosY, OrigX, OrigY, DimX, DimY, IterX, IterY, TempX;
        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            this.Refresh();
            Bitmap bmp = new Bitmap(this.ClientSize.Width, ClientSize.Height);
            maxx = this.ClientSize.Width;
            maxy = this.ClientSize.Height;
            Limite = 100;
            OrigX = -2.0;
            OrigY = -1.25;
            DimX = 0.5;
            DimY = 1.25;
            PasoX = (DimX - OrigX) / maxx;
            PasoY = (DimY - OrigY) / maxy;


            for (int i = 0; i < maxx; i++)
                for (int j = 0; j < maxy; j++)
                {
                    PosX = OrigX + i * PasoX;
                    PosY = OrigY + j * PasoY;
                    IterX = 0.0;
                    IterY = 0.0;
                    Terminar = Pasos = 0;
                    while (Terminar==0)
                    {
                        TempX = (IterX * IterX) - (IterY * IterY) + PosX;
                        IterY = 2 * (IterX * IterY) + PosY;
                        IterX = TempX;
                        Pasos++;
                       double r, s;
                        r = (double)Math.Abs(IterX) * Math.Abs(IterX);
                        s =(double) Math.Abs(IterY) * Math.Abs(IterY);
                        if (Math.Sqrt(r+s) >= 2.0)
                            Terminar++;
                        if (Pasos >= Limite) Terminar++;
               
                           i=maxx;
                           j=maxy;
                           Terminar++;
                     
                    }
                    if (Pasos < Limite)
                        bmp.SetPixel(i, j, Color.Blue);
                   
                }
            Graphics g = this.CreateGraphics();
            g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);
        }




esta es la ejecución de este código:






aqui puedes descargar la aplicación.

1 comentario:

  1. Maraca un error en
    if (Pasos < Limite)
    bmp.SetPixel(i, j, Color.Blue);
    Dice: El parametro debe ser positivo y menor que el ancho, podrias subir el proyecto completo por favor?
    Gracias de antemano

    ResponderEliminar