La programmation du Mandelbrot est facile.
Mon code rapide et peu soigné est ci-dessous (pas garanti sans bug, mais un bon aperçu).
Voici l'aperçu : L'ensemble de Mandelbrot se trouve dans la grille complexe entièrement à l'intérieur d'un cercle de rayon 2.
Alors, commencez par balayer chaque point de cette zone rectangulaire. Chaque point représente un nombre complexe (x + yi). Itérer ce nombre complexe :
[nouvelle valeur] = [ancienne valeur]^2 + [valeur d'origine]
tout en suivant deux choses :
1.) le nombre d'itérations
2.) la distance de [nouvelle valeur] de l'origine.
Si vous atteignez le nombre maximum d'itérations, vous avez terminé. Si la distance de l'origine est supérieure à 2, vous avez terminé.
Une fois terminé, coloriez le pixel d'origine en fonction du nombre d'itérations effectuées. Puis passez au pixel suivant.
public void MBrot()
{
float epsilon = 0.0001; // La taille du pas à travers les axes X et Y
float x;
float y;
int maxIterations = 10; // augmenter cela vous donnera un fractal plus détaillé
int maxColors = 256; // Changez selon votre affichage.
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); //en fonction du nombre d'itérations, colorez un pixel
}
}
}
Certains détails ont été omis :
1.) Apprenez exactement ce qu'est le carré d'un nombre complexe et comment le calculer.
2.) Découvrez comment traduire la région rectangulaire (-2,2) en coordonnées à l'écran.
6 votes
En fonction des réponses à cette question, j'ai créé un gist sur GitHub avec un mandelbrot animé en javascript utilisant l'élément canvas. gist.github.com/1853604