Explorateur fractale mandelbrot haute definition

Description

Explorateur de l'ensemble M de Mandelbrot avec fonctions de rendu avancé, ainsi que le rendu buddhabrot.

Pour ceux qui n'aiment pas les longs discours, lancez le programme et cliquez sur le bouton ' Démo! '
Lisez aussi les commentaires dans le sub de ce bouton.

Bonjour,

Suite à une soudaine envie de dessiner des fractales, j'ai regarder les différentes sources du site. Il y en a de fort sympa, j'ai donc voulu ajouter mon grain de sel :) Etant un fana de l'optimisation, je vous propose ce soft, en VB6, qui n'a pas à rougir en terme de performances.
Rien d'intéressant jusque là, me direz-vous, alors j'ai codé des fonctions en prime qui, à mon avis, en amusera plus d'un.

Au menu :
- Exploration et zoom par simple clique gauche / clique droit maintenu de la souris
- Différentes palettes de couleurs précalculées, dont la HSL qui donne d'excellents résultats dans les zones complexes
- Rotation de la palette avec barre espace (spacebar) et retour arrière (backspace)
- Fenêtre de visualisation séparée et redimensionnable à volonté
- Copie direct dans le presse-papier pour envoyer une image dans un autre logiciel
- Rendu haute résolution : faites vos fond d'écran fractale avec une qualité d'image stupéfiante! En plus il n'y a pas de limite de taille (mettez vous-même les dimensions : 1024x768, 1920x1080, 200x200, ... fonctionne en 8000x8000, mais comptez un bon quart d'heure de calcul...)
- Rendu vidéo AVI ! Zoomez, zoomez, zoomez ... et faite un rendu vidéo de votre exploration. Vous verrez les motifs se répéter à l'infini :) . Une option permet le rendu en haute résolution, mais c'est très lent !
- Rendu BuddhaBrot, une autre façon de présenter l'ensemble M en traçant tous les points calculés dans la suite z(n+1)=z(n)^2+z(0) . Les effets sont remarquable.
- D'autres gadgets encore, et surtout un code optimisé pour le compilateur. Compilez-le et les calculs seront 10 fois plus rapide.

C'est un programme complexe et l'interface n'est, hélas, pas très intuitive. Le code source est, je l'espère, suffisament commenté pour que vous compreniez les fonctionnalités.

Source / Exemple :


'Voir le ZIP, le code est complexe mais commenté au maximum.
'Le module principale : G_Fract.bas
'Le module d'interface image : MatrixBuffer.bas
'Le module de rendu AVI : myAVI.bas
'Le module pour multithreadé le rendu AVI : GF_Thread.bas
'Autres modules importés pour le rendu AVI : mdAVI.bas, CDib.cls

'Algorithme utilisé pour le rendu Mandelbrot. Des variantes optimisés pour les divers rendus sont ailleur dans le code.

Function PurMandelCalc(ByRef ro As Double, ByRef io As Double, ByVal mx_iter As Long) As Long
'boucle de calcul de la suite pur
'ro, io ont les coordonnées de départ
'mx_iter le nombre d'itération maximale de la suite (pour éviter l'overflow)
Dim r As Double, rt As Double, i As Double, r2 As Double, i2 as Double
    
    r = ro
    i = io
    r2 = r * r
    i2 = i * i

    Do

        rt = r2 - i2 + ro
        i = 2 * r * i + io
        r = rt
        r2 = r * r
        i2 = i * i
        
    PurMandelCalc = PurMandelCalc + 1
    Loop While ((r2 + i2 < 4) And (PurMandelCalc < mx_iter)
    
End Function

Conclusion :


Ne criez pas "au loup!", j'ai regardé des sources et m'en suis inspiré. Le système de rendu AVI utilise même deux modules récupéré de planet-source-code.
Toutefois il n'y a pas de copié-collé. J'ai réécrit les algo entièrement pour essayer d'optimiser la vitesse de rendu.

Vous trouverez le module MatrixBuffer.bas qui permet de s'affranchir de la lenteur de VB question interface picturebox et images.

C'est aussi un code partiellement multithread compilable. Comment faire pour que le multithread ne plante pas ? C'est simple : ne faite pas de sortie sur fichier!! Limitez au maximum l'appels aux objets, et ça marche.

ATTENTION le rendu haute résolution sur disque dur (bouton 'dd') nécessite que l'option Etendre palette soit choisi.

Voila, sur ce, essayez de trouver une belle zone à rendre en mode haute résolution, c'est impressionnant par moment!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.