This module is part of the original MMBasic library. It is reproduced here with kind permission of Hugh Buckle and Geoff Graham. Be aware it may reference functionality which has changed or is deprecated in the latest versions of MMBasic.¶
Note: Any required file(s) are available in the attachments tab (top right).
100 'MANDELBROT.BAS - Draws mandelbrot set fractal images
102 'By loki on the Back Shed Aug 2012
103 'See topic (MM) Mandelbrot & Julia set fractals
105 'Specify initial values
110 RealOffset = -2.0
115 ImaginOffset = -1.2
130 MAXIT=70 'max iterations
165 PixelWidth = MM.HRES
170 PixelHeight = MM.VRES
175 GAP = PixelHeight / PixelWidth
180 SIZE = 2.8
185 XDelta = SIZE / PixelWidth
190 YDelta = (SIZE * GAP) / PixelHeight
195 CLS
200 'Loop processing - visit every pixel in screen area and base colour of pixel
201 ' on the number of iterations required to escape boundary conditions
202 ' If count hits max iterations then pixel hasn't escaped and is part of the set (the 'inner sea')
205 FOR X = 0 TO (PixelWidth - 1)
210 Cx = X * Xdelta + RealOffset
215 FOR Y = 0 TO (PixelHeight - 1)
220 Cy = Y * YDelta + ImaginOffset
225 Zr = 0.0
230 Zi = 0.0
235 COUNT = 0
240 'Begin Iteration loop, checking boundary conditions on each loop
250 DO WHILE (( COUNT <= MAXIT ) AND (( Zr * Zr + Zi * Zi ) <= 4 ))
255 new_Zr = Zr * Zr - Zi * Zi + Cx
260 new_Zi = 2 * Zr * Zi + Cy
265 Zr = new_Zr
270 Zi = new_Zi
275 COUNT = COUNT + 1
280 LOOP
415 PIXEL(X,Y) = ((COUNT MOD 2) - 1) * -1
500 NEXT Y
510 NEXT X
520 DO
530 a$ = INKEY$
540 LOOP WHILE a$ = ""
600 'End listing