Description du logiciel|Caractéristiques du logiciel|Download|Galleries d'images|Description des modules|Description des modules|autres
Version 0.1.111 juin 2003 (VB6)
Zwitl Fractal 2K3 est la dernière évolution de mon générateurs d'images fractales créé à l'aide du langage visual basic 6. Il permet de générer des images fractales de diverses familles, de sauvegarder des images et des paramètres et de créer des animations en variant un ou des paramètres. Un module spécial permet aussi d'effectuer une recherche systématiques d'images, mais son usage est assez compliqué, alors je n'en présenterais que les résultats. La dernière évolution de mon logiciel possède une interface expérimentale et innovatrice, créée pour son design unique plus que pour la versatilité.La possibilité d'utiliser d'entrer ses propres équation a été ajouté, quoiqu'il est plus lent.
J'ai démarré un projet utilisant ce logiciel. Il s'agit de rechercher systématiquement toutes les images fractales issues des équations ayant 8 opérantes et opérateurs parmis une liste de 16. Vous trouverez plus de détails ici.
- Génère le Mandelbrot d'ordre 2,3,4 et 5 sans l'interpréteur d'équation et son équivalent julia
- Génère le Buddhabrot, variante de l'algorithme de Mandelbrot
- Génère le Nebulabrot, variante de l'algorithme du Buddhabrot, consiste en 3 rendus superposés
- Génère le Vectorbrot, variante de l'algorithme du Mandelbrot
- Génère le Herter-Heighway Dragon, algorithme de type "Self Similar"
- Génère la courbe de Koch en mode linéaire (pas le Kock Snowflake)
- Génère les factals de la famille "Self Similar" à partir d'une série de points
- Génère les fractals de la famille du mandelbrot à partir d'une équation unique.
- Génère les images en utilisant une ou deux palettes de 512 couleurs la où c'est possible.
- Génère les images en 24 bits si windows est dans cette définition
- Génères des images de dimension quasi-ilimitée
- Sauvegarde en format jpg par défaut, sauvegarde aussi en .bmp si spécifié dans le nom de fichier
- Sauvegarde automatique des résultats dans le cas des algorithmes très longs
- Antialiasing optionel
- Enregistre automatiquement tous les rendus effectués et conserve un icone
- Enregistre les résutats obtenus pour une réutilisation ultérieure
- Génére des animations entre deux images par interpolation des paramètres différents
- Permet de redémarrer le rendu d'une animation
- Interpréteur d'équation utilisant les nombres complexes.
Liste des fichiers:
fractal.zip4,1 Mo
Zwitl Fractal 2K3 est la dernière évolution de mon générateurs d'images fractales créé à l'aide du langage visual basic 6. Il permet de générer des images fractales de diverses familles, de sauvegarder des images et des paramètres et de créer des animations en variant un ou des paramètres. (Par manque d'espace d'hébergement, j'ai retiré les gros download de mon site web)
Buddhabrot
Algorithme du Buddhabrot et variantes Contient une description détailléeest des exemples de l'algorithme connu sous le nom de buddhabro. Quelques variantes et leurs résultats sont aussi présentées. 2003
Images fractales 2002-2003
Images fractales 2002-2003 Images fractales générées avec la dernière vesion du logiciel. Comprend unne bonne démonstration de l'algorithme du buddhabrot et quelques variante. Contient aussi des image obtenues avec l'éditeur d'équation et quelques vidéos. 2002-2003
Images fractales 2000-2001
Images fractales 2000-2001 (version 0.0.28 et antérieure) Images fractales générées avec la version VB5 du logiciel. Cela inclus principalement des explorations du mandelbrot. 2000-2001
Module Mandelbrot
Le Mandelbrot, qui doit son nom au mathématicien Benoit Mandelbrot, est la figure fractale la plus connue. L'intérêt du mandelbrot est sa forme inhabituelle et la capaciter de zoomer à l'interieur de celui-ci pour trouver des figures complexes et artistiquement intéressante. On retrouve une multitude de "minibrots" qui sont des mini mandelbrot à l'intérieur de celui-ci, d'où ses propriétées fractales. Le résultat de l'équation Z²+C est itérée pour chacun des pixels et le résultat est interprété en une couleur pour se pixel.
Théorie: Son équation est Z²+C, où c'est C est la coordonnée du pixel de départ et Z est le dernier pixel obtenu. Le résultat est un nouveau pixel. Les coordonnées sont des nombres complexes, où X est l'axe des réels et Y l'axe des imaginaires. Il part donc, pour chaque pixel de l'image, de sa coordonnée initiale et on itère pour former une série. Si le module de la coordonnée Z(sa longueur) dépasse une valeur limite, il y a divergence. Dans ce cas le pixel serait de blanc vers bleu, dépendant du nombre d'itération requis pour divergé. Pour 32 itération, la 32e couleur de la palette principale est choisie. Si après le nombre maximal d'itération, le module de Z n'a pas dépassé la valeur limite, un pixel noir est dessiné (couleur nulle dans la palette). Par contre les vastes zones de convergence ne contienne aucun détails. On peut donner une autre couleur à partir du module de Z. L'algorithme donne la couleur nulle pour un module entre 0 et 2, puis parcoure la palette secondaire pour donner une couleur lorsque |Z| est entre 2 et la valeur limite de convergence. L'alternance des zones fortement divergentes (blanc), faiblement divergente (bleue) et convergente (noir) donne l'image. Dans l'exemple à gauche, la couleur passe de noir à blanc en passant par le rouge et l'orange.Le calcul doit être appliqué pour chacun des pixels dont les coordonnées varient en fonction de la position de l'image dans le plan complexe et le niveau de zoom.
Variante Julia
Le julia est une forme plus générale du mandelbrot. Pour chaque point du Mandelbrot, une image du julia peut être obtenue. Sa forme dépendra du point choisi. Un point au centre du Mandelbrot (0.5,0) donne un cercle noir et un point loin donne du blanc. Les images détaillées se trouvent en périphérie du Mandelbrot, tel l'exemple à droite. On passe en mode julia en appuyant sur le J de la mini fenêtres des paramètres fractals.
Théorie: L'univers du Mandelbrot est à 4 dimensions (Z réel, Zcomplexe, Créel et Ccomplexe), le Mandelbrot est une tranche 2D de cette univers à Z = 0+0i sur le plan C. Le julia lui, prend un point Z quelconque définit par l'utilisateur sur le mandelbrot et applique le même algorithme. Le choix du plan Z détermine l'image finale. Chaque fractal obtenue avec une équation du type du mandelbrot (avec C et Z) possède des équivalents Julia.
Paramètres:
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée pour le pixel. Position Julia X Valeur réelle de départ de Z pour la génération du Julia Position Julia Y Valeur imaginaire de départ de Z pour la génération du Julia Zero Init Façon différente de démarrer l'algorithme (aucun effet), on part la première itération avec Z = (0,0) au lieu de Z = C. 2nd Palette Utilise la palette secondaire pour colorer les pixels de convergence Mode Julia Permet d'utiliser le mode Julia
![]()
Module Equation Custom
Ce module permet de dessiner des images fractales aux équations quelconques en utilisant le même algorithme que le Mandelbrot. Voici la liste des opérateurs et opérandes possible, par ordre de priorité.
Opérateur Opérandes ( parenthèse z résultat de la dernière itération - négation c coordonées du pixel i imaginaire u variable utilisateur u sin sinus v variable utilisateur v cos cosinus w variable utilisateur w tan tangeante 1 constante (réelle) atg arctangeante i constante (imaginaire) ^ exposant 2*i+3 constante mixte ln log naturel sqr racine carrée * multiplication / division + addition - soustraction abs valeur absolue int valeur entière rl partie réelle img partie imaginaire ) parenthèseNotes:
- Toutes les variables Z,C,U,V,W sont mixte (réelle et imaginaire)
- Les variables utilisateurs sont définie en cliquant sur le M de la fenêtre de paramètres
- Les dépassement (overflow) et division par zéro sont vérifiée et plafonnée, ce qui peut donner des résultats bizarre
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée pour le pixel. Position Julia X Valeur réelle de départ de Z pour la génération du Julia Position Julia Y Valeur imaginaire de départ de Z pour la génération du Julia Zero Init Façon différente de démarrer l'algorithme (aucun effet), on part la première itération avec Z = (0,0) au lieu de Z = C. (peu de résultats, modifie parfois l'image obtenue, mais souvent donne une image triviale et pas intéressante) 2nd Palette Utilise la palette secondaire pour colorer les pixels de convergence Mode Julia Permet d'utiliser le mode Julia ![]()
Module Buddhabrot
Le Buddhabrot est une variante de l'algorithme du Mandelbrot donnant une figure ayant une forme similaire, mais ne possédant pas de centre vide comme avec l'algorithme usuel. Son nom, proposé sur le site de Melinda Green The Buddhabrot Technique vient du fait que si on tourne la figure sur le côté, on obtient quelque chose qui ressemble à un boudha assis. Le nombre d'itérations utilisées détermine aussi l'apparence de l'image. Une image à 50000 itérations (6h de rendu!) n'a pas plus de détail qu'une image à 500, elle est différente! Ce qui augmente la qualité, c'est la résolution des calculs. En gros, l'algorithme donne la couleur en fonction de la fréquentation d'une zone du mandelbrot dans le parcour des séries.
Note: Les résultats sont emmagasiné dans le le sous-répértoire "result" de l'application lorsque l'option Save-Results est employée.
Théorie: La méthode pour générer l'image diffère de la méthode normale parce que la couleur du pixel est déterminée par le nombre de fois que le résultat de l'équation Z²+C est passée par les points correspondant à chaque pixel. Une matrice de la taille de l'image est créée. Par la suite, on divise l'espace occupé par le mandelbrot (de -2 à 1 en réel et de -1,5 à 1,5 en complexe) en un certain nombre de lignes et de colonnes déterminé par le paramètre de la résolution. Les points obtenus (la jonction des lignes et des colonnes) servent à générer l'image. Pour chacun de ces points, on prend calcule la série Z²+C et pour chacun des point parcourus, la matrice est augementé de 1. Une couleur est donnée en fonction la fréquentation du pixel le plus souvent visité. Ainsi, si un point a été fréquenté 200 fois et que le maximum a été de 500, le pixel aura la couleur à 40% de la palette. Si le gain est à 2, la couleur à 80% sera utilisée. Le gain sert à neutraliser l'effet des point trop souvent parcourus. Naturellement, je tient compte que la figure est symétrique afin d'acclélérer les calculs. Il existe une autre approche que de quadriller le mandelbrot. On peut choisir des points au hasard, mais l'image est peut précise si on utilise peu de point et on est à la mercie d'un mauvais générateur de nombres aléatoire.
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée pour le pixel. Resolution Résolution du rendu. Plus c'est élevé plus ce sera long, mais l'image sera moins granuleuse. Je recommande 1000+. Le nombre de points traitée est de Resolution². Gain Gain de l'image, augmente la valeur des pixels par rapport au maximum. Draw All dessine tous les pixels lors du rendu (ralentie), sinon, 1 sur 100 sera affiché. N'influence pas le résultat final Save Results Enregistre les résultats pour plus tard. Permet de reprendre un rendu plus tard.
Module Nebulabrot
Le Nébulabrot reprend le même algorithme que le Buddhabrot. On utilise donc la représentation de couleur RGB pour pouvoir distinguer la différences entre les différentes valeurs d'itérations du buddhabrot.
Note: Les résultats sont emmagasiné dans le le sous-répértoire "result" de l'application lorsque l'option Save-Results est employée.
Théorie: Au lieu d'utiliser qu'une seule valeur pour le nombre maximal d'itération, 3 valeurs différentes sont utilisées. Le résultats obtenu pour les trois valeurs sur chacun des pixels détermine la couleur. Au lieu de prendre la couleur dans la palette principale, chacun des résultat contribue à la partie rouge, verte et bleue dela couleur du pixel. Cela donne des couleurs qui se rapprochent de celles utilisée par la Nasa pour colorer les images observée par le téléscope spatial Hubble. Chaque longueurs d'ondes donne une couleur différente à l'image des colonnes de gas de la nébuleuse de l'aigle (à gauche)
Blue Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. (bleu) Green Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. (vert) Rouge Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. (rouge) Valeur Max Valeur de |Z| à laquelle la divergence est déclarée Resolution Résolution du rendu. Plus c'est élevé plus ce sera long, mais l'image sera moins granuleuse. Je recommande 1000+. Le nombre de points traitée est de Resolution². Blue Gain Gain de l'image, augmente la valeur des pixels par rapport au maximum pour le bleu. Green Gain Gain de l'image, augmente la valeur des pixels par rapport au maximum pour le vert. Red Gain Gain de l'image, augmente la valeur des pixels par rapport au maximum pour le rouge. Draw All dessine tous les pixels lors du rendu (ralentie), sinon, 1 sur 100 sera affiché. N'influence pas le résultat final Save Results Enregistre les résultats pour plus tard. Permet de reprendre un rendu plus tard.
Module VectorBrot
Le Vectorbrot est une variante de l'algorithme du Mandelbrot donnant une figure ayant une forme similaire issue d'un principe analogue au buddhabrot. En gros, l'algorithme donne la couleur en fonction l'angle et du module de Z menant à chacun des pixels. Visuellement, l'image est très similaire à celle du buddhabrot, mais la coloration est bien plus intéressante.
Note: Les résultats sont emmagasiné dans le le sous-répértoire "result" de l'application lorsque l'option Save-Results est employée.
Théorie: La méthode pour générer l'image diffère de la méthode normale parce que la couleur du pixel est déterminée par l'angle et le module des valeur de |Z| menant à chacun des pixels selon l'équation Z²+C. Pour chacun des pixels, on accumule donc un vecteur du total des Z menant à lui. Cela donne deux matrice, une pour la partie réelle et l'autre pour l'imaginaire. La couleur est donnée suivant le code de couleur HSV. Le Hue (couleur selon l'arc-en-ciel sur 360 degrée, 0 = rouge, 120 = vert, 240 = bleu) est donné par l'angle du vecteur total. La saturation est au maximum. L'intensité vient de la longeur par rapport à la longeur maximale obtenue.
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée. Resolution Résolution du rendu. Plus c'est élevé plus ce sera long, mais l'image sera moins granuleuse. Je recommande 1000+. Le nombre de points traitée est de Resolution². Cet algorithme requiert une résolution deux fois plus faible pour donner des résultats équivalent à l'algorithme du buddhabrot. Gain Gain de l'image, augmente la valeur des pixels par rapport au maximum. Draw All dessine tous les pixels lors du rendu (ralentie), sinon, 1 sur 100 sera affiché. N'influence pas le résultat final Save Results Enregistre les résultats pour plus tard. Permet de reprendre un rendu plus tard. ![]()
Module VectorBrot Custom
Le Vectorbrot Custom reprend le même algorithme que le Vectorbort normal, mais il permet d'utiliser n'importe quelle équation au lieu de celle du Mandelbrot (Z²+C). Par contre, il est plus lent, puisque l'équation n'est pas optimisée et qu'il ne tient pas compte de l'effet de symétrie. L'image est généré à partir des régions convergente des images lorsque dessinée par le module d'équation Custom. Il est donc nécessaire d'avoir une figure fermée comprise entre -1.5 et 1.5 sur les deux axes.
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée. Resolution Résolution du rendu. Plus c'est élevé plus ce sera long, mais l'image sera moins granuleuse. Je recommande 1000+. Le nombre de points traitée est de Resolution². Cet algorithme requiert une résolution deux fois plus faible pour donner des résultats équivalent à l'algorithme du buddhabrot. Gain Gain de l'image, augmente la valeur des pixels par rapport au maximum. Draw All dessine tous les pixels lors du rendu (ralentie), sinon, 1 sur 100 sera affiché. N'influence pas le résultat final Save Results Enregistre les résultats pour plus tard. Permet de reprendre un rendu plus tard. ![]()
Module Mandelbrot de 3e, 4e et 5e ordre et Mandelbrot Inversé
Le Mandelbrot du 3e ordre n'a de différent que le coefficient Z est au cube au lieu d'être au carré (Mandelbrot de 2e ordre). Son équation est Z³+C. On l'appelle communément le "Mandelbrot à deux culs". En augmentant d'ordre, on obtient de plus en plus de "têtes", c'est le cas pour les mandelbrot de 4e et 5e ordre.
Pour le mandelbrot inversé, on utilise Z²+1/C. L'usage de 1/C fait en sorte que l'infinie réelle et imaginaire est à (0,0), et le centre du plan complexe est aux asymptotes du plan
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée pour le pixel. Position Julia X Valeur réelle de départ de Z pour la génération du Julia Position Julia Y Valeur imaginaire de départ de Z pour la génération du Julia Zero Init Façon différente de démarrer l'algorithme (aucun effet), on part la première itération avec Z = (0,0) au lieu de Z = C. (aucun effet) 2nd Palette Utilise la palette secondaire pour colorer les pixels de convergence Mode Julia Permet d'utiliser le mode Julia ![]()
Module Sharon Star et triangle fractal
J'ai pris cet équation dans le logiciel Iteration version 29, qui semble être une évolution de du logiciel Flarium24. J'en ai conservé le nom. L'équation est Z^4+1/C et elle a la particularité de donner un espèce de triangle fractal qui est l'inverse d'un mandelbrot d'ordre 4. Si on utilise le zéro init, on obtient un triangle fractal, qui est l'équivalent du mandelbrot inversé., mais d'ordre 4.
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée pour le pixel. Position Julia X Valeur réelle de départ de Z pour la génération du Julia Position Julia Y Valeur imaginaire de départ de Z pour la génération du Julia Zero Init Façon différente de démarrer l'algorithme (aucun effet), on part la première itération avec Z = (0,0) au lieu de Z = C. 2nd Palette Utilise la palette secondaire pour colorer les pixels de convergence Mode Julia Permet d'utiliser le mode Julia ![]()
Module Koch Curve
Ce module permet de dessiner la version linéaire du flocon de neige fractal (Koch Snowflake), le fractal de type self-similar le plus connue.
Théorie: Le point de départ est deux points (-0,5 et 0,5 en X et 0 en Y) qui sont reliée par un droite constituant un trajet (ordre 0). L'ajout d'un petit triangle au travers de la ligne droite donne un nouveau trajet de la forme
(ordre 1). Le
constitue la primitive de l'image fractale. Ce nouveau trajet comporte 5 points et 4 lignes. Il peut être divisé en 4 nouveaux trajets utilisant la primitive, ce qui donne une nouvelle figure (ordre 2). On peut poursuivre le processus pour obtenir une image fractale de plus en plus complexe.
Order Ordre de l'image. Correspond au nombre de fois que le tajet a été subdivisé. Les nombres Réels positifs sont acceptées. Alternate side Alterne le sens de la primitive (droite à gauche ou gauche à droite) entre chaque subdivision. Color Gradient Donne une couleur différente à chaque segments en utilisant la palette principale. ![]()
Module Herter-Heighway Dragon
Ce fractal est un autre type d'image self-similar qui, cette fois, utilise l'alternance entre les deux sous-trajet. Il est étonnant de constater que le trajet du point d'origine ne se croise jamais!
Order Ordre de l'image. Correspond au nombre de fois que le tajet a été subdivisé. Les nombres Réels positifs sont acceptées. Alternate side Alterne le sens de la primitive (droite à gauche ou gauche à droite) entre chaque subdivision. Color Gradient Donne une couleur différente à chaque segments en utilisant la palette principale. ![]()
Module Self-Similar Fractals
Ce module permet de dessiner les figures qui sont une répétition d'eux même. Il s'agit d'une version générale de la Koch Curve. Il est possible de créer ses propres figures en appuyant sur le bouton M de la fenêtre de paramètres.
Itération Max Nombre maximal d'itération effectuée avant de déclarer qu'il y a convergence pour le pixel. Valeur Max Valeur de |Z| à laquelle la divergence est déclarée pour le pixel. Position Julia X Valeur réelle de départ de Z pour la génération du Julia Position Julia Y Valeur imaginaire de départ de Z pour la génération du Julia Zero Init Façon différente de démarrer l'algorithme (aucun effet) 2nd Palette Utilise la palette secondaire pour colorer les pixels de convergence Mode Julia Permet d'utiliser le mode Julia
Autres
information sur les fractales
Screenshot de l'ancienne version du logiciel:
![]()
C'est le mieux que je pouvait faire avec des widgets gris de windows!
Principe derrière les figures fractales générées par le Zwitl Fractal:
MandelBrot
Il faut premièrement voire l'image du mandelbrot comme un plan cartésien un peu plus évolué. On retrouve deux axes, en x et en y, mais l'un (les x) est réel et contient des nombres réel alors que l'autre est imaginaire, c'est à dire qu'il représente un nombre de racine de -1 notée i, par exemple 2,5i pour l'axe des y. La création des figures du type du Mandelbrot se fait en appliquant la formule suivante: Z(n+1) = Zn2 + C. En appliquant dans cette formule les coordonnées d'un point de l'image (séparément X et Y puisqu'ils sont de nature différente) pour la valeur de C et 0 pour Z(n) , on obtient un résultat correspondant à un autre point du plan. En réutilisant ces nouvelles coordonnées dans la formule, concervant C ayant la valeur du point d'origine et X(n) la valeur du point trouvé, on obtient un second point et encore un autre si on recommence. Si ce processus fait des points qui forment une série s'éloignant de l'origine du plan (0,0), le point de départ du calcul diverge et il se voit appliquer une couleur, dépendant de la vitesse à laquelle il diverge. Au contraire, si la série converge, on associe une couleur fixe à ce point, très souvent le noir. Toutefois, l'équation ne peut être appliquée indéfiniment et chaque calcul (ou itération), demande une fraction de seconde. Calculer la divergence demande cependant un nombre considérable d'itération et si celui-ci est trop faible, la divergence n'est pas clairementétablie pour des points limites. Ainsi, plus le nombre d'itérations est élevé, plus l'image sera présise dans les régions limites entre la convergence et la divergence, surtout à un niveau de zoom très important. En général, le nombre d'itération minimales pour une image normale du mandelbrot est de 255, un chiffre acceptable est de 512 et pour certaines régions limites à des zoom de 10^13, ce nombre peut augmenter jusqu'à 4096. Certaines image faisant la couverture de revues mathématiques demandent même jusqu'à 65000 itérations. Un nombre plus élevé d'itérations augmente considérablement le temps de création de l'image, surtout dans les régions noires puisque dans le cas de ces points, toutes les itérations doivent être faîtes.
Lors du calcul, si un point diverge, la distance du centre du plan devient souvent astronomique car le tout est mis au carré et la valeur maximale calculable par le processeur est vite atteinte et peut faire planter le logiciel. Une valeur maximale doit donc être fixée, environ 1000000, et le nombre d'itérations requises pour dépasser cette valeur détermine la couleur du point qui diverge. Cette valeur a une faible importance sur le temps de rendu, sauf si cette valeur est près de quatre (22) qui est la distance limite entre la convergence et la divergence fixée arbitrairement par le logiciel. Toutefois, avec une valeur de 4,1 le mandelbrot aura plutôt l'air d'être monochrome.
Le calcul de la formule du mandelbrot se calcule suivant la règle des opérations sur les nombres complexes. Les nombre complexes sont des nombres comprenant une partie réelle et une partie imaginaire, par exemple 2+4,5i correspondant aux coordonnées dans le plan tel que x+yi. Le calcul se fait comme suit en utilisant la propriété de la mutliplication:
Première itération:
Z(n+1) = Z(n)2 + C
= (0+0i)2 + (0,5+0,25i)
= 0,5 + 0,25i Coordonnées du point finalSeconde itération:
Z(n+1) = Z(n)2 + C
= (0,5+0,25i)2 + (0,5+0,25i)
= (0,5+0,25i)(0,5+0,25i) + 0,5 + 0,25i
= (0,5*0,5 - 0,25*0,25)+(0,5*0,25+0,5*0,25)i + 0,5 + 0,25i
= 0,25 - 0,0625 + (0,125 + 0,125)i + 0,5 + 0,25i
= 0,6875 + 0,5i Coordonnées du point finalToutefois, afin de faciliter le calcul, les coordonées x et y sont séparés et l'opération ci-haut est simplifié puisqu'il s'agit d'un carré et non d'une multiplication.
Z(n+1) = Zn2 + C X Y
X(n+1) = X(n)2 + Y(n)2 + Cx Y(n+1) = X(n)*Y(n) + X(n)*Y(n) + CyCela permet de créer l'algorythme suivant créant le mandelbrot:
Les variables utilisées:
Z(0): point de départ de la première itération. Pour le mandelbrot, cette valeur est toujours:
X(0) = 0 Y(0) = 0
C(0): Coordonnées du pixel traité de l'image
Cx et Cy
SizeX et SizeY: Taille en pixel de l'image à générer
Largeur et Hauteur: dimension de l'image en coordonnées
PixelX et PixelY: Pixel actuellement traité
PosX et PosY: coordonnées du point central de l'image
Zoom:i Valeur du zoom étant calculé en zoom logarithmique de préférence (ex: nombre entré = 5 donc le zoom est de 10^5 ou 100000)
DisX et DisY: distance entre le centre de l'image et le bord de celle-ci
i: numéro de l'itération
ItérationMax: Nombre maximum d'itération
MaxValue: Valeur maximale de divergenceCode:
Disx = PosX - 1 / Zoomi
Largeur = 2 * (PosX - Disx)
Disy = PosYi - (1 / Zoom) * (SizeY / SizeX)
Hauteur = 2 * (PosY - Disy)For pixelx = 0 To SizeX
cx = pixelx / (SizeX / Largeur) + Disx 'Taille du pixel de départ X
For pixely = 0 To SizeY
cy = pixely / (SizeY / Hauteur) + Disy 'Taille du pixel de départ X
X0 = 0 'Z0 pour x
Y0 = 0 'Z0 pour yi
For i = 0 To IterationMax
X1 = X0 ^ 2 - Y0 ^ 2 + cx 'Calcul de Zn+1
Y1 = 2 * Y0 * X0 + cy
If Sqr(X1 ^ 2 + Y1 ^ 2) > MaxValue Then: Exit For 'itérations
X0 = X1 'n = n+1
Y0 = Y1
Next i
If X1 ^ 2 + Y1 ^ 2 < 4 Then
'Convergence
PicRender.PSet (pixelx, SizeY - pixely), RGB(0,0,0)
Else
'divergence
If i <= 511 Then
PicRender.PSet (pixelx, SizeY - pixely), RGB(CouleurGradient(i).R, CouleurGradient(i).G, CouleurGradient(i).B)
Else
i = i Mod 511
PicRender.PSet (pixelx, SizeY - pixely), RGB(CouleurGradient(i).R, CouleurGradient(i).G, CouleurGradient(i).B)
End If
End If
Next pixely
next pixelxJulia:
La figure du Julia n'est pas une variation du mandelbrot, mais son complément. Ainsi, dans le calcul du mandelbrot, la veleur de départ de Z(0) est toujour de 0+0i. Par contre dans le cas du Julia, cette valeur correspond à une valeur d'un point du Mandelbrot. Si ce point fait partie de la section centrale convergente, le julia ressemblera à un ovale ou à une figure noire au centre et très peu colorée à l'extérieur. Près d'un point légèrement divergent du rebord du mandelbrot, la forme sera plus intéressante, ressemblant à un dragon chinois où à d'autres figures enroulées sur elles-même.