Benoît MandelbrotBorn in 1924, died in 2010.
Interested in roughness and irregularities seen in nature:
- Traditional geometrical shapes (e.g. circle, line) are perfectly smooth
- Searched for simple geometrical equations that would exhibit roughness
- Rough/fragmented geometric shapes
- Self-similarity at all scales: zoom in on a small area and you can find the original shape in it.
Click on this image to start the applet. The source code can be downloaded here.
Mandelbrot Set: Definition
The Mandelbrot set is a set of complex numbers (c) that meet the following condition:
Zn(c) ≠ ∞ as n →∞
The function Zn is defined as follows:
- Start by setting n=0
- Initial value: Z0 = c
- Compute: Zn+1 = Zn2 + c (keep repeating this, incrementing n)
- Test whether Zn goes to infinity as n goes to infinity
The Mandelbrot Set is self-similar at all scales:
- Zoom in on areas to find small sections that look like the original shape; can zoom in further on those.
Computers aren’t good with infinity!
- It has been shown that if Zn > 2, it will tend to infinity
- We can compute Zn up to a maximum of some value such as n=100, and see if it exceeds 2 during that time
- As you zoom into smaller areas, need to increase n
Complex numbers have two parts (real, imaginary)
- Plot real part on X axis and imaginary part on Y axis
- We can just treat these as two separate numbers
Square of a complex number:
- If (a,b) is a complex number, then its square is (a2-b2, 2ab)
A commonly plotted area is from (-2,-1.5) to (1,1.5).
Plotting the Mandelbrot Set
Loop over all points in a graphics area.
For each point:
- Rescale it to the point on the complex plane that we are plotting
- If it’s a member of the Mandelbrot set, give it a fixed colour
- If it’s not, colour it according the value n where it reached Zn > 2
- To set a pixel to a colour in the applet, draw line 1 pixel long
- I use blue for the members of the set
- I give other points a hue in the range 0-0.5, which is along the colour spectrum red-orange-yellow-green.
- Static text items
- Editable items
- Plot and Reset buttons
- One for each button: implement actionPerformed
- One for each JTextField: implement focusLost
- When focus is lost on a position textbox, it has been edited, so parse their values next time Plot is pressed
- When focus is lost on Iterations textbox, it has been edited, so parse its value
- Attached to applet overall
- mouseMoved: update mouse position textbox
- mouseDragged: first, record start position, then record current position
- mouseReleased: parse positions and repaint.
Feedback & Comments