Fractal de mandelbrot

Description

Le fractal de Mandelbrot est la visualisation d'un objet mathématique. Il s'agit en fait d'une matrice de nombres, où la valeur de chaque nombre est représentée par une couleur.
Chaque point de l'image est un nombre calculé par l'ordinateur selon une équation très simple: Zn+1 = Zn2 + C (pour plus d'informations, http://en.wikipedia.org/wiki/Mandelbrot_set).

Notez que pour optimiser le code, on peut écrire une méthode non-managée (dans un bloc unsafe) qui accélérerait considérablement la vitesse d'exécution (SetPixel n'étant pas des plus rapides...). Mais les performances en mode release sont suffisantes pour cette petite démos (moins d'une seconde).

Source / Exemple :


''' ------------------------------------------------------------------------
    ''' <summary>
    ''' Draw the fractal.
    ''' </summary>
    ''' <remarks> For more performance, use unmanaged code [unsafe]. </remarks>
    ''' ------------------------------------------------------------------------
    Public Sub DraMandelbrotFractal()
        Using gfx As Graphics = Me.CreateGraphics()
            Me._bmpBuffer = New Bitmap(Me.Width, Me.Height, gfx)
            Dim halfX As Integer = 2 * Me._bmpBuffer.Width / 3
            Dim halfY As Integer = Me._bmpBuffer.Height / 2
            Dim i As Integer, j As Integer = 0

            For j = 0 To Me.Height - 1
                For i = 0 To Me.Width - 1
                    Dim complex As Complex = New Complex((i - halfX) / 150D, (j - halfY) / 150D)
                    Me._bmpBuffer.SetPixel(i, j, Me.GetColor(Me.GetStep(complex)))
                Next
            Next

            Graphics.FromImage(Me._bmpBuffer).DrawString("Mandelbrot's Fractal", Me._font, Me._fontBrush, Point.Empty)
            gfx.DrawImage(Me._bmpBuffer, Point.Empty)
        End Using
    End Sub

Conclusion :


Pour une version C# avec code unmanaged (pointeur): http://www.csharpfr.com/code.aspx?ID=41443

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.