Fractalis : Traceur de fractales de type
Mandelbrot et Julia
https://github.com/PatriceDargenton/Fractalis
Ancien dépôt : https://codes-sources.commentcamarche.net/source/5826
D'après la source : https://codes-sources.commentcamarche.net/source/5516
Documentation : Fractalis : index.html
Code source : Fractalis : FractalisSrc.html
http://patrice.dargenton.free.fr/CodesSources/index.html
Version 5.02 du 21/08/2024
Table des matières
Fractalis
5.01, version du 29/03/2015 (non publiée)
Fractalis
4.0, version du 30/01/2003
Fractalis
3.0, version du 17/01/2003
Fractalis
2.0, version du 06/01/2003
Fractalis
1.0, version du 31/12/2002
Films
fractals sous DOS, version du 10/01/1996
Est-il encore besoin de présenter les ensembles fractals de Mandelbrot ? à partir de l'équation Z -> Z2 + C, on peut créer une infinité d'images fantastiques, qui possèdent des propriétés d'autosimilarité et d'invariance d'échelle : Z et C étant des nombres complexes, on compte combien d'itérations sont nécessaires pour sortir du cercle unitaire, c'est tout !
Et pour les ensembles de Julia, c'est la même formule que l'ensemble de Mandelbrot, sauf que ce n'est plus la constante C qui est liée aux pixels mais la première valeur de la variable Z (qui n'est donc plus initialisée à 0), et chaque constante C définie un ensemble de Julia particulier.
Mode d'emploi : zoomer sur l'image en sélectionnant une zone :-)
Au début, j'avais imaginé optimiser le tracé avec l'algorithme des QuadTree (arborescence en carrés de résolution progressive pour ne pas examiner tous les pixels d'un gros pavé si le nombre d'itération trouvé est le même aux quatre coins et au centre du pavé), ou alors avec un algorithme de remplissage, et les deux algo en même temps, mais en trouvant un code source franchement plus rapide, tout cela est devenu inutile tellement la performance était supérieure !
Il est possible de produire des vidéos, mais pour le moment cela se fait par le code, il n'y a pas encore d'interface dédiée. Par exemple si un zoom vous semble particulièrement intéressant, il suffit de noter la coordonnée du centre de l'image et de réinitialiser le zoom : ensuite la progression du zoom ne changera pas la cible choisie.
Julia02-Extrait-1280x720-30fps
- Il faudrait un package nuget pour la création de vidéo, ce serait plus simple.
- Éditeur de scénario pour les vidéos ;
- Version html en Blazor.
https://github.com/PatriceDargenton/Fractalis/blob/master/Changelog.md
- Gestion des vidéos : d'après un code VB6 trouvé sur CCM ;
- Filtrage bilinéaire : appliquer un flou calculé en 2D pour éviter la pixellisation ;
- Algorithme fractal rapide : d'après un article sur CodeProject ;
- Algorithme QuadTree, et QuadTree avec remplissage en même temps ;
- Gestion des palettes de couleurs ;
- Passage en .NET Framework 4.0.
- Algorithme de remplissage : les ensembles de Julia et Mandelbrot sont connexes, on peut donc tracer suivant la propagation d'un remplissage délimité par une frontière correspondant au nombre d'itérations max. Cet algo. (déjà implémenté dans la version sous DOS) peut servir dans d'autres logiciels d'analyse ou de traitement d'image. Le seul petit défaut est que l'image doit toujours être effacée à chaque nouvelle résolution d'image (il y a une option pour cela), mais ce problème disparaîtra avec l'algo. QuadTree ;
- Mode Détail d'une itération : on peut voir les points successifs atteints à chaque itération de l'équation Z -> Zdegré + C ;
- Saisie des paramètres de Julia aussi au clavier, c'est plus pratique ;
- Le mode Bitmap de cache et maintenant toujours utilisé afin de réafficher rapidement le tracé, notamment pour dessiner la zone de sélection sans effacer le dessin ;
- Programmation orienté objet (POO) : la classe ClsFractRemplissage dérive de ClsFract. La POO en VB .NET, c'est du pur bonheur :-)
- Option Strict On : Syntaxe plus stricte, surtout pour les conversions de type qui doivent être explicites ;
- Petite correction par rapport à la version 3.0 : traitement des événements au lieu de leur redéfinition. Si on ne change pas une fonction de base, c'est plus simple et plus logique de traiter par exemple l'événement frmFractalis_Paint() que de redéfinir la fonction frmFractalis.OnPaint().
- Lien : https://codes-sources.commentcamarche.net/source/5826
- Nombre maximum d'itération : il est maintenant relatif au minimum trouvé au précédant zoom. Cela évite de le définir trop élevé dès le début, alors que c'est seulement pour un zoom profond que l'on a besoin de beaucoup d'itérations ;
- Possibilité d'un degré > 2 dans l'équation Z -> Zdegré + C (degré entre 2 et 5), par ex. Z -> Z4 + C donne des symétries triangulaires ;
- Ensemble de Julia : c'est la même formule que l'ensemble de Mandelbrot, sauf que ce n'est plus la constante C qui est liée aux pixels mais la première valeur de la variable Z (qui n'est donc plus initialisée à 0), et chaque constante C définie un ensemble de Julia particulier ;
- Correction de l'inversion de droite à gauche du cercle unitaire de Mandelbrot ;
- En option, utilisation d'un bitmap de cache pour repeindre rapidement le tracé sans le recalculer : c'est 15% plus rapide que le tracé direct dans la feuille ;
- Et aussi : panneau de configuration, zoom arrière, thread pour tracer, sélection améliorée.
- Lien : https://codes-sources.commentcamarche.net/source/5674
Pixels progressifs, couleurs, ratio préservé, redimensionnement de l'application, précision en Décimal (pour pouvoir zoomer à fond) :
https://codes-sources.commentcamarche.net/source/5594
Logiciel créé à partir de Fractalis 1.0 de michelsto :
TRACEUR DE FRACTALES EN VB.NET (7.0)
https://codes-sources.commentcamarche.net/source/5516
basé sur l'explication pour une réalisation en VB6 :
http://progzone.free.fr/graphisme/mandelvb/mandelvb.html (lien perdu)
Création de films fractals sous DOS (le code source date de 1992) :
http://patrice.dargenton.free.fr/fractal/fractal.zip (68 Ko)
(attention : mémoire DOS conventionnelle libre requise : 550 Ko, tapez mem dans une fenêtre de commandes MS-DOS pour vérifier la mémoire disponible).