

Title  Use a Complex class to draw the Mandelbrot set easily in Visual Basic .NET 
Description  This example shows how to use a Complex class to draw the Mandelbrot set in Visual Basic .NET. 
Keywords  Mandelbrot set, fractal, Visual Basic .NET, VB.NET, Visual Basic 
Categories  Graphics, Graphics, Algorithms 


You can draw a Mandelbrot set by iterating the equation:
Z_{n} = Z_{n1}^{2} + C
Where Z_{n} and C are complex numbers. For a point (X, Y) in a particular area of the set, the program sets Z_{0} = 0 and C = X = Y * i. The program iterates this equation until the magnitude of Z_{n} is at least 2 or the program performs a maximum number of iterations.
This example uses a Complex class to manage the complex numbers easily and intuitively. The following code shows the program's main loop.


Dim Z As Complex = Z0
Dim C As New Complex(ReaC, ImaC)
clr = 1
Do While clr < MaxIterations And Z.MagnitudeSquared < _
MAX_MAG_SQUARED
' Calculate Z(clr).
Z = Z * Z + C
clr = clr + 1
Loop
' Set the pixel's value.
m_Bm.SetPixel(X, Y, m_Colors(clr Mod NumColors))


The rest of the main program's code (and there's a lot of it) deals with resizing the form, letting you use the mouse to select an area for zooming, and so forth.
The following code shows the parts of the Complex class that are most important to this example.


Public Class Complex
Public Re As Double = 0
Public Im As Double = 0
' ...
' Binary +.
Public Shared Operator +(ByVal c1 As Complex, ByVal c2 _
As Complex) As Complex
Return New Complex(c1.Re + c2.Re, c1.Im + c2.Im)
End Operator
' Binary *.
Public Shared Operator *(ByVal c1 As Complex, ByVal c2 _
As Complex) As Complex
Return New Complex( _
c1.Re * c2.Re  c1.Im * c2.Im, _
c1.Re * c2.Im + c1.Im * c2.Re)
End Operator
' ...
End Class


See the code for details.
Compare this example to Use a Complex class to draw the Mandelbrot set easily in Visual Basic 6. The .NET version is much faster.








