Я пытаюсь нарисовать фрактал Мандельброта, используя следующий метод, который я написал:
public void Mendelbrot(int MAX_Iterations)
{
int iterations = 0;
for (float x = -2; x <= 2; x += 0.001f)
{
for (float y = -2; y <= 2; y += 0.001f)
{
Graphics gpr = panel.CreateGraphics();
//System.Numerics
Complex C = new Complex(x, y);
Complex Z = new Complex(0, 0);
for (iterations = 0; iterations < MAX_Iterations && Complex.Abs(Z) < 2; Iterations++)
Z = Complex.Pow(Z, 2) + C;
//ARGB color based on Iterations
int r = (iterations % 32) * 7;
int g = (iterations % 16) * 14;
int b = (iterations % 128) * 2;
int a = 255;
Color c = Color.FromArgb(a,r,g,b);
Pen p = new Pen(c);
//Tranform the coordinates x(real number) and y(immaginary number)
//of the Gauss graph in x and y of the Cartesian graph
float X = (panel.Width * (x + 2)) / 4;
float Y = (panel.Height * (y + 2)) / 4;
//Draw a single pixel using a Rectangle
gpr.DrawRectangle(p, X, Y, 1, 1);
}
}
}
Это работает, но медленно, потому что мне нужно добавить возможность масштабирования.Используя этот метод рисования это невозможно, поэтому мне нужно что-то быстрое.Я пытался использовать FastBitmap , но этого недостаточно, SetPixel
FastBitmap не увеличивает скорость рисования.Поэтому я ищу что-то очень быстрое, я знаю, что C # не похож на C
и ASM
, но было бы интересно сделать это в C#
и Winforms
.
Предложениядобро пожаловать.
РЕДАКТИРОВАТЬ: Мендельброт Set Zoom Animation