A simple fractal exploration program, named after the "cooler" version of broccoli.
Supported Fractals:
- The Mandelbrot set
- Multibrot sets
- Julia sets
- Multijulia sets
- The Burning Ship fractal
- The "Bird of prey" fractal (the burning ship fractal raised to the power of 3 in lieu of 2)
- Arbitrary power burning ship fractals (multiburningship)
- The Collatz fractal
- The Tricorn set
- Multicorn sets
$ git clone [email protected]:TheTeaCat/romanesgo.git
$ cd romanesgo/
$ go build
$ ./romanesgo
Do "romanesgo help {Fractal Name}" for further info on a particular fractal function.
Fractals:
mandelbrot
julia
multijulia
birdofprey
multiburningship
multicorn
collatz
multibrot
burningship
tricorn
Flags:
-c value
constants
-cf string
coloring function (default "default")
-ff string
fractal (default "none")
-fn string
filename (default "temp.png")
-h int
image height (default 1000)
-i int
maximum iterations (default 128)
-r int
goroutines used (default 4)
-ss int
supersampling factor (default 1)
-w int
image width (default 1000)
-x float
central x coord
-y float
central y coord
-z float
zoom factor (default 1)
So, here's some usage on an i5-3320m (pretty old lil laptop processor):
$ ./romanesgo -ff=burningship -x=-1.748 -y=0.035 -z=20 -ss=4 -w=25000 -h=25000 -fn=bigship.png
Fractal (ff): burningship
Constants (c):
Max Iterations (i): 128
Coloring function (cf): default
Centre x Coord (x): -1.748
Centre y Coord (y): 0.035
Zoom factor (z): 20
Image Width (w): 25000
Image Height (h): 25000
Supersampling (ss): 4
Routines (r): 4
Filename (png) (fn): bigship.png
Routine 2 Done.
Routine 0 Done.
Routine 3 Done.
Routine 1 Done.
Time taken: 14m9.110651581s
What is that, a 625 megapixel image, in 14 minutes? I guess that's alright for an old laptop. 🤷♂️
Oh, and that's with supersampling set to 4, so it's making 16 samples per pixel, which basically makes that equivalent to a 10 gigapixel image.
-w=2600 -h=2000 -ff=mandelbrot -x=-0.65 -z=0.8 -i=1024 -ss=2
-w=2600 -h=2000 -ff=julia -c=-0.2 -c=0.65 -z=0.9 -i=512 -ss=2
-w=2000 -h=2600 -ff=burningship -x=-1.749 -y=0.037 -z=20 -i=256 -ss=2
-ff=collatz -cf=wackyGrayscale -z=0.5 -w=2600 -h=2000 -ss=4 -i=8
See samples/multicorn/multicorn-animation.sh
for i in $(seq 1 0.04 5)
do
./romanesgo -ff=multicorn -i=256 -z=0.5 -ss=4 -w=400 -h=400 -c=$i -fn="samples/multicorn/frames/${i}.png"
done
-ff=multibrot -c=4 -w=2600 -h=2000 -z=0.7 -x=-0.2 -ss=2
-ff=multijulia -c=0.2 -c=0.9 -c=3 -z=0.8 -y=-0.15 -i=256 -ss=2
-w=2000 -h=2600 -ff=julia -c=0.1 -c=0.7 -z=0.75 -ss=2 -cf=smoothcolor
-w=2000 -h=2600 -ff=julia -c=-0.22 -c=0.65 -z=8 -i=800 -ss=4 -cf=wackyRainbow
-w=2600 -h=2000 -ff=julia -c=-0.2 -c=0.65 -z=5 -i=512 -ss=2 -cf=wackygrayscale
-w=2600 -h=2000 -ff=mandelbrot -x=-0.82 -y=-0.1905 -z=50 -i=512 -ss=2 -cf=smoothgrayscale
-w=2600 -h=2000 -ff=julia -c=-1 -c=-0.25 -z=1.5 -i=512 -ss=2 -cf=zgrayscale
-ff=burningship -z=100 -y=1.015 -cf=wackygrayscale -ss=8 -w=2000 -h=2000