' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2024.09.09.00.00]) on 2026.01.01 at 21:45 (Coordinated Universal Time)
' This program by Charlie Veniot is a port and mod of a QB64 program by
' Kurt Moerman, shared with the "BASIC Programming Language" Facebook group
' (https://www.facebook.com/share/p/1BnaiB8Q67/)
_TITLE "Julia Fractal"
' -−-−-−-−-−-−-
' z_new = z^2 + c z and c are complex numbers
' z = zr + zi*j zr and zc depend on coordinates inside image
' c = cr + ci*j cr and ci remain constant
' z^2 = (zr+zi*j)^2 = zr^2 + 2*zr*zi*j - zi^2 = zr^2 - zi^2 + 2*zr*zi*j
' z^2 + c = (zr^2 - zi^2 + cr) + (2*zr*zi + ci)*j ' real and imaginary part
OPTION EXPLICIT
CONST f% = 10
DIM AS LONG co
DIM AS INTEGER x, y, counter, r, g, b
DIM AS DOUBLE cr, ci, zr, zi, zr_new, Zi_new
DIM rm% = 33, gm% = 129, bm% = 65, _
rf% = 8, gf% = 2, bf% = 4, countermax% = 1024
SCREEN _NEWIMAGE( 160 * f%, 800, 32 )
CLS
cr = -0.5125 ' constant value c
ci = 0.5213
🔶loop_start:
FOR x = 0 TO XMAX - 1
FOR y = 0 TO YMAX - 1
zr = x / ( XMAX - 2 ) * 3.0 - 1.5
zi = y / ( YMAX - 2 ) * 2.0 - 1.0
counter = 0
WHILE ( counter < countermax% ) AND ( ( zr ^ 2 + zi ^ 2 ) < 4 )
zr_new = zr ^ 2 - zi ^ 2 + cr
zi = 2 * zr * zi + ci
zr = zr_new
counter = counter + 1
WEND
counter = INT( SQR( counter ) * 8 )
r = ( counter MOD rm% ) * rf% : IF r > 255 THEN r = 255
g = ( counter MOD gm% ) * gf% : IF g > 255 THEN g = 255
b = ( counter MOD bm% ) * bf% : IF b > 255 THEN b = 255
co = _RGB32( r, g, b )
PSET( x, y ), co
NEXT y
IF x MOD f% = 0 THEN SLEEP 0.001
NEXT x
SLEEP 5
rm% = RND * 255
gm% = RND * 255
bm% = RND * 255
rf% = RND * 11
gf% = RND * 11
bf% = RND * 11
countermax% = 1500 ' RND * 5000 + 90
GOTO 🔶loop_start