IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
n5ver
Člen
Avatar
n5ver:10.9.2015 13:43

Ahoj, porč ser mi Mandelbrotova množina vykresluje tak dlouho?

public Form1()
        {
            InitializeComponent();

            pictureBox1.Image = MandelbrotSet(pictureBox1.Width, pictureBox1.Height, 2.0, -2.0, 2.0, -2.0);
        }

        public Bitmap MandelbrotSet(int width, int height, double rMax, double rMin, double iMax, double iMin)
        {
            double rScale = (Math.Abs(rMin) + Math.Abs(rMax))/width;
            double iScale = (Math.Abs(iMin) + Math.Abs(iMax))/height;
            Bitmap img = new Bitmap(width, height);

            for (int x = 0; x < img.Width; x++)
            {
                double tempx = (x*rScale + rMin);
                for (int y = 0; y < img.Height; y++)
                {
                    Complex c = new Complex(tempx, (y * iScale + iMin));
                    Complex z = c;
                    int iteration = 0;

                    while (z.Magnitude <= 2 && iteration < 500)
                    {
                        iteration++;
                        z = c + Complex.Pow(z, 2);
                    }

                    if(iteration != 500)
                        img.SetPixel(x, y, Color.FromArgb(iteration % 128 * 2, iteration % 32 * 7, iteration % 16 * 14));
                    else
                        img.SetPixel(x, y, Color.Black);
                }
            }

            return img;
        }
 
Odpovědět
10.9.2015 13:43
Avatar
Odpovídá na n5ver
sadlomaslox25:10.9.2015 21:23

img.SetPixel je strasne pomale. lepsi je si to vykreslit do pole a to protocit na bitmapu nebo pres unsafe a zapisovat ty pixely pres pointery.

 
Nahoru Odpovědět
10.9.2015 21:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.