Das Programmieren des Mandelbrot ist einfach.
Mein Quick-n-Dirty-Code ist unten (nicht garantiert fehlerfrei, aber eine gute Übersicht).
Hier ist der Umriss: Die Mandelbrot-Menge liegt im Komplex-Gitter vollständig innerhalb eines Kreises mit Radius 2.
Beginnen Sie also damit, jeden Punkt in diesem rechteckigen Bereich zu scannen. Jeder Punkt repräsentiert eine komplexe Zahl (x + yi). Iterieren Sie diese komplexe Zahl:
[new value] = [old-value]^2 + [original-value]
während Sie zwei Dinge im Auge behalten:
1.) die Anzahl der Iterationen
2.) die Entfernung von [neuer Wert] vom Ursprung.
Wenn Sie die maximale Anzahl von Iterationen erreicht haben, sind Sie fertig. Wenn der Abstand vom Ursprung größer als 2 ist, sind Sie fertig.
Wenn Sie fertig sind, färben Sie das Originalpixel abhängig von der Anzahl der durchgeführten Iterationen. Fahren Sie dann mit dem nächsten Pixel fort.
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.
}
}
}
Einige ausgelassene Details sind:
1.) Erfahren Sie genau, was das Quadrat einer komplexen Zahl ist und wie Sie es berechnen.
2.) Finden Sie heraus, wie der (-2,2) rechteckige Bereich in Bildschirmkoordinaten übersetzt wird.