Accueil

Borne Arcade

Jeux



Liens



Programmation

Linux

Mosaïque


Galaxian.xls
Othello
Mandel



Présentation du programme :

Si vous avez suivi les excellents cours ici et la, vous voyez que l'on peut faire avec Excel autre chose que =A1*365

Je vous passe les projets Excel "geek" qui n'intéresse que moi pour vous parler d'un projet amusant qui consiste à fabriquer des fractales de Mandelbrot. Pour ceux qui ne connaissent pas ce monsieur, voici quelques liens utiles :
Benoît Mandelbrot
Les fractales de Mandelbrot et de Julia
Les mathématiques et les fractales.
Le chaos et les fractales.
Un logiciel pour créer ses fractales.

Maintenant que vous êtes pro des fractales, je peux vous montrer la feuille Excel permettant de générer les images :



Bon, ok, c'est horrible. Le code est encore pire, c'est pourquoi je ne vais pas m'appesantir dessus. Je vous donne seulement mon algorithme pour le calcul d'un pixel de la fractale :

Private Sub AppelMandel(Cx As Double, Cy As Double)

Dim Zx As Double
Dim Zxsve As Double
Dim Zy As Double
Dim ModuleZcarre As Double

Dim cpt As Long

Zx = 0
Zy = 0

ProfMandel = -1
DivergeMandel = 0

cpt = 1
Do While (cpt ‹= ProfMax And ProfMandel = -1)
'zn+1 = zn*zn + C
'z0=0
Zxsve = Zx
Zx = Zx * Zx - Zy * Zy + Cx
Zy = 2 * Zxsve * Zy + Cy
ModuleZcarre = Zx * Zx + Zy * Zy
DivergeMandel = DivergeMandel + ModuleZcarre

If ModuleZcarre › 4 Then
ProfMandel = cpt
End If
cpt = cpt + 1

Loop

End Sub

Ensuite, le coté artistique intervient dans la façon de manipuler les variables ProfMandel et DivergeMandel .

- Si ProfMandel = -1 , le pixel appartient à la courbe, on le positionne à noir.

- Si ProfMandel ‹› -1 , le pixel n'appartient pas à la courbe, on joue alors avec ProfMandel et DivergeMandel dans les composantes RVB.

La beauté d'une courbe dépend essentiellement de cette fonction. On peut imaginer le code suivant, mais cela reste un exemple :


Private Function CouleurMandel1() As Long
Dim couleur0 As Long
Dim couleur1 As Long

If ProfMandel = -1 Then
CouleurMandel1 = 0
Else
couleur0 = Int(DivergeMandel * 100) Mod 255
couleur1 = (ProfMandel * 20) Mod 255
CouleurMandel1 = 16776960 - couleur1 * 256 + couleur0
End If

End Function

Gallerie :

Je vous présente maintenant mes réalisations effectuées à partir du programme Excel. Les images évoluent au cours du temps en fonction des améliorations que j'ai apportées au programme.



Mandelbrot : taille 640 x 480












Mandelbrot : taille 2560 x 1920
















Julia : taille 2560 x 1920








Mandelbrot : taille 5120 x 3840








Julia : taille 5120 x 3840










Joli, non ?

A+

Bou 1


plan du site
Généré le 16 déc 2011 par Bou1