FINÁLNÍ VÝPRODEJ KREDITŮ na ITnetwork je tady. Využij poslední šanci a získej až 80 % extra kreditů ZDARMA na náš interaktivní e-learning. Zjisti více:
NOVINKA: Kurz kybernetické bezpečnosti s akreditací MŠMT, nyní již od 0 Kč. Staň se žádaným profesionálem. Zjisti více:
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.