|
mandprog |
|
The Mandelbrot set is perhaps the world's best known fractal. It consists of a mapping
of all The following program is for C and is written by S.J. Mattie Thompson. Mandelbrot set program code PROGRAM MANDELBROT
!--------------------------------------------------------
! Generate the Mandelbrot set.
!
! Author: S.J. Mattie Thompson
! Date: April 28, 1993
! Updated July 06, 1994 for the MacIntosh IIci
!-------------------------------------------------------------------------------
CALL INITIAL (NX, NY, XL, XR, YB, YT, NITER)
LET DY = (YT - YB)/NY
LET DX = (XR - XL)/NX
FOR J = 1 to NY
LET Y = YB + (J - 1)*DY
FOR I = 1 to NX
LET X = XL + (I - 1)*DX
CALL CONVERGE (X, Y, NITER, ICOUNT)
CALL PLOT_POINT (X, Y, ICOUNT)
NEXT I
NEXT J
END
SUB INITIAL (NX, NY, XL, XR, YB, YT, NITER)
ASK PIXELS NX, NY
ASK MAX COLOR COLOR_MAX
INPUT PROMPT "XMIN = ": XL
INPUT PROMPT "XMAX = ": XR
INPUT PROMPT "YMIN = ": YB
INPUT PROMPT "YMAX = ": YT
LET NITER = COLOR_MAX - 4
LET SCALE = (NX/NY - 1)*(YT - YB)
LET XL = XL - SCALE/2
LET XR = XR + SCALE/2
CLEAR
SET WINDOW XL, XR, YB, YT
SET BACK "black"
END SUB
SUB CONVERGE (X, Y, NITER, ICOUNT)
LET CX = 0
LET CY = 0
LET ZX = 0
LET ZY = 0
LET ZABS = 0
LET ICOUNT = 0
FOR K = 1 to NITER
LET ZX = CX*CX + CY*CY + X
LET ZY = 2*CX*CY + Y
LET ZABS = SQR(ZX*ZX + ZY*ZY)
IF (ZABS > 2) THEN
LET ICOUNT = ICOUNT + 1
EXIT SUB
END IF
LET CX = ZX
LET CY = ZY
LET ICOUNT = ICOUNT + 1
NEXT K
END SUB
SUB PLOT_POINT (X, Y, ICOUNT)
SET COLOR ICOUNT + 4
PLOT POINTS: X, Y
END SUB
This program is written by S.J. Mattie Thompson. |