Sierpinski Circle Graphic

DO
RANDOMIZE TIMER: CLS : SCREEN 12
PRINT TAB(15); "Sierpinski Circles - Mal Lichtenstein, for REC"
PRINT TAB(15); "Adapted for PC by Graham Yeager & Dr. M. Ecker"
' Copyright 2000, Dr. M. Ecker, REC
pi = 4 * ATN(1): m = 2 + INT(20 * RND): r = m - INT((m - 2) * RND)
LOCATE 29, 30: PRINT "m ="; m; " r ="; r;
REDIM a(2 * m + 1), b(2 * m + 1)
FOR i = 1 TO m
a(i) = COS(2 * pi * i / m): b(i) = SIN(2 * pi * i / m)
NEXT
x = RND: y = RND
FOR n = 1 TO 50000
i = INT(m * RND) + 1
IF RND <= .5 THEN
x = x / r + a(i)
y = y / r + b(i)
ELSE
xx = x / (x * x + y * y)
yy = y / (x * x + y * y)
x = xx / r: y = yy / r
END IF
px = 120 * (x + 2.5): py = 120 * (y + 2)
PSET (px, py), i MOD 16
NEXT
t = TIMER: WHILE TIMER < t + 3: WEND
LOOP
Click your browser's Back button or click me to return to REC's page.