Mandelbrot Set

- XLogo

This program draws the classic Mandelbrot Set, drawn in shades of green. Use an image editing program such as Photoshop to best adjust the colors.

The Mandelbrot Set is defined by the equation z=z2+c, where c is the starting point in the complex plane, and z is initially zero. This function is iterated many times. If z eventually escapes a circle of radius 2 centred on the origin, then the initial point c is not in the Mandlebrot set. It is assigned a color based on the number of iterations it took for z to escape. Otherwise point c is part of the Mandlebrot set and is colored black.
We approximate infinity with a large number. This assumption is not always valid, but we must make it to avoid infinite looping.

To New
  # set default screen, pen and turtle values
  ResetAll SetScreenSize [400 400] HideTurtle
  SetSC Black SetPC Green SetPS 1 PenUp
End

To Mand :Mp :Np
  Make "M 0 Make "N 0 Make "Count 0
  Repeat 90 [
    Make "Mnew (Power :M 2) - (Power :N 2) + :Mp
    Make "N (2*:M*:N) + :Np
    Make "M :Mnew
    Make "Count :Count + 1
    If ((Power :M 2) + (Power :N 2)) > 4 [
      SetPC PenCol :Count Stop] ]
End

To PenCol :Theta
  Make "Gre 255 *Sin :Theta
  Output ( List 0 :Gre 0 )
End

To Go :Order
  New
  Make "Size Item :Order [24 16 12 8 6 4 3 2 1]
  SetPW :Size
  Make "Start (Integer :Size/2)-192
  For (List "Y 0 191 :Size) [
    For (List "X :Start 191 :Size) [
    SetPC Black Mand (:X/140)-0.7 :Y/140
    SetXY :X :Y Dot Pos
    SetXY :X Minus :Y Dot Pos ] ]
End

Mandelbrot
Mandelbrot

Procedures blue
Variables pink
Comments green
Library gray