Програмувати Мандельброта просто.
Мій швидкий-брудний код знаходиться нижче (не гарантується, що він не містить помилок, але хороший контур).
Ось контур: Набір Мандельброта лежить у Комплексній сітці повністю в межах кола радіусом 2.
Отже, почніть із сканування кожної точки в цій прямокутній області. Кожна точка представляє комплексне число (x + yi). Ітерація цього комплексного числа:
[new value] = [old-value]^2 + [original-value]
відстежуючи дві речі:
1.) кількість ітерацій
2.) відстань [нового значення] від початку.
Якщо ви досягли максимальної кількості ітерацій, все готово. Якщо відстань від початку координат більше 2, ви закінчили.
Завершивши, розфарбуйте оригінальний піксель залежно від кількості виконаних вами ітерацій. Потім перейдіть до наступного пікселя.
public void MBrot()
{
float epsilon = 0.0001; // The step size across the X and Y axis
float x;
float y;
int maxIterations = 10; // increasing this will give you a more detailed fractal
int maxColors = 256; // Change as appropriate for your display.
Complex Z;
Complex C;
int iterations;
for(x=-2; x<=2; x+= epsilon)
{
for(y=-2; y<=2; y+= epsilon)
{
iterations = 0;
C = new Complex(x, y);
Z = new Complex(0,0);
while(Complex.Abs(Z) < 2 && iterations < maxIterations)
{
Z = Z*Z + C;
iterations++;
}
Screen.Plot(x,y, iterations % maxColors); //depending on the number of iterations, color a pixel.
}
}
}
Деякі деталі, які залишились поза увагою:
1.) Дізнайтеся, що саме являє собою квадрат комплексного числа і як його обчислити.
2.) З’ясуйте, як перевести (-2,2) прямокутну область на координати екрана.