NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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.