{"id":17161713,"url":"https://github.com/theteacat/romanesgo","last_synced_at":"2025-07-14T10:33:50.246Z","repository":{"id":54996138,"uuid":"163536666","full_name":"TheTeaCat/romanesgo","owner":"TheTeaCat","description":"A simple fractal renderer, named after the \"cooler\" version of broccoli.","archived":false,"fork":false,"pushed_at":"2021-02-07T13:02:35.000Z","size":29457,"stargazers_count":19,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T05:12:48.125Z","etag":null,"topics":["burningship","collatz","fractal","fractal-generators","fractal-images","fractal-rendering","fractals","generative-art","go","golang","mandelbar","mandelbrot","multibrot","multicorn","multijulia","tricorn"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheTeaCat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-29T19:44:16.000Z","updated_at":"2024-11-11T00:49:53.000Z","dependencies_parsed_at":"2022-08-14T08:31:22.524Z","dependency_job_id":null,"html_url":"https://github.com/TheTeaCat/romanesgo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTeaCat%2Fromanesgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTeaCat%2Fromanesgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTeaCat%2Fromanesgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTeaCat%2Fromanesgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheTeaCat","download_url":"https://codeload.github.com/TheTeaCat/romanesgo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248724629,"owners_count":21151561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["burningship","collatz","fractal","fractal-generators","fractal-images","fractal-rendering","fractals","generative-art","go","golang","mandelbar","mandelbrot","multibrot","multicorn","multijulia","tricorn"],"created_at":"2024-10-14T22:43:44.920Z","updated_at":"2025-04-13T14:11:51.396Z","avatar_url":"https://github.com/TheTeaCat.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Romanesgo\n\nA simple fractal exploration program, named after the \"cooler\" version of broccoli.\n\nSupported Fractals:\n\n - [The Mandelbrot set](#the-mandelbrot-set)\n - [Multibrot sets](#a-multibrot-set)\n - [Julia sets](#a-julia-set)\n - [Multijulia sets](#a-multijulia-set)\n - [The Burning Ship fractal](#the-burning-ship-fractal)\n - The \"Bird of prey\" fractal (the burning ship fractal raised to the power of 3 in lieu of 2)\n - Arbitrary power burning ship fractals (multiburningship)\n - [The Collatz fractal](#the-collatz-fractal)\n - The Tricorn set\n - [Multicorn sets](#a-multicorn-animation)\n\n## Contents\n\n - [Usage](#usage)\n - [Performance](#performance)\n - [Example Images](#example-images)\n\n## Usage\n\n``` \n$ git clone git@github.com:TheTeaCat/romanesgo.git\n$ cd romanesgo/\n$ go build\n$ ./romanesgo \nDo \"romanesgo help {Fractal Name}\" for further info on a particular fractal function.\n\nFractals:\n\t mandelbrot\n\t julia\n\t multijulia\n\t birdofprey\n\t multiburningship\n\t multicorn\n\t collatz\n\t multibrot\n\t burningship\n\t tricorn\n\nFlags:\n  -c value\n    \tconstants\n  -cf string\n    \tcoloring function (default \"default\")\n  -ff string\n    \tfractal (default \"none\")\n  -fn string\n    \tfilename (default \"temp.png\")\n  -h int\n    \timage height (default 1000)\n  -i int\n    \tmaximum iterations (default 128)\n  -r int\n    \tgoroutines used (default 4)\n  -ss int\n    \tsupersampling factor (default 1)\n  -w int\n    \timage width (default 1000)\n  -x float\n    \tcentral x coord\n  -y float\n    \tcentral y coord\n  -z float\n    \tzoom factor (default 1)\n```\n\n\n\n## Performance\n\nSo, here's some usage on an i5-3320m (pretty old lil laptop processor):\n\n```\n$ ./romanesgo -ff=burningship -x=-1.748 -y=0.035 -z=20 -ss=4 -w=25000 -h=25000 -fn=bigship.png\n\n\tFractal (ff):\t\t burningship \n\tConstants (c):\t\t  \n\tMax Iterations (i):\t 128 \n\tColoring function (cf): default \n\tCentre x Coord (x):\t -1.748 \n\tCentre y Coord (y):\t 0.035 \n\tZoom factor (z):\t 20 \n\tImage Width (w):\t 25000 \n\tImage Height (h):\t 25000 \n\tSupersampling (ss):\t 4 \n\tRoutines (r):\t\t 4 \n\tFilename (png) (fn):\t bigship.png \n\nRoutine 2 Done.\nRoutine 0 Done.\nRoutine 3 Done.\nRoutine 1 Done.\n\nTime taken: 14m9.110651581s\n```\n\nWhat is that, a 625 megapixel image, in 14 minutes? I guess that's alright for an old laptop. :man_shrugging:\n\nOh, 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.\n\n\n\n## Example images\n\n### The Mandelbrot set\n```\n-w=2600 -h=2000 -ff=mandelbrot -x=-0.65 -z=0.8 -i=1024 -ss=2\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/mandelbrot.png\" width=\"70%\"\u003e\n\u003cp\u003e\n\n### A Julia set\n```\n-w=2600 -h=2000 -ff=julia -c=-0.2 -c=0.65 -z=0.9 -i=512 -ss=2\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/julia.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### The Burning Ship fractal\n```\n-w=2000 -h=2600 -ff=burningship -x=-1.749 -y=0.037 -z=20 -i=256 -ss=2\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/burningship.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### The Collatz fractal\n```\n-ff=collatz -cf=wackyGrayscale -z=0.5 -w=2600 -h=2000 -ss=4 -i=8\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/collatz.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### A multicorn animation\nSee [samples/multicorn/multicorn-animation.sh](/samples/multicorn/multicorn-animation.sh)\n```\nfor i in $(seq 1 0.04 5)\ndo\n    ./romanesgo -ff=multicorn -i=256 -z=0.5 -ss=4 -w=400 -h=400 -c=$i -fn=\"samples/multicorn/frames/${i}.png\"\ndone\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/multicorn/multicorn.gif\" width=\"400px\"\u003e\n\u003c/p\u003e\n\n### A multibrot set\n```\n-ff=multibrot -c=4 -w=2600 -h=2000 -z=0.7 -x=-0.2 -ss=2\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/multibrot.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### A multijulia set\n```\n-ff=multijulia -c=0.2 -c=0.9 -c=3 -z=0.8 -y=-0.15 -i=256 -ss=2\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/multijulia.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### A smoothed RGB colouring function\n```\n-w=2000 -h=2600 -ff=julia -c=0.1 -c=0.7 -z=0.75 -ss=2 -cf=smoothcolor\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/julia4.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### A stepped RGB colouring function\n```\n-w=2000 -h=2600 -ff=julia -c=-0.22 -c=0.65 -z=8 -i=800 -ss=4 -cf=wackyRainbow\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/wacky-rainbow.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### A stepped grayscale colouring function\n```\n-w=2600 -h=2000 -ff=julia -c=-0.2 -c=0.65 -z=5 -i=512 -ss=2 -cf=wackygrayscale\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/julia2.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### A smooth grayscale colouring function\n```\n-w=2600 -h=2000 -ff=mandelbrot -x=-0.82 -y=-0.1905 -z=50 -i=512 -ss=2 -cf=smoothgrayscale\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/mandelbrot2.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### Another smooth grayscale colouring function\n```\n-w=2600 -h=2000 -ff=julia -c=-1 -c=-0.25 -z=1.5 -i=512 -ss=2 -cf=zgrayscale\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/julia3.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### The Burning Ship Lady\n```\n-ff=burningship -z=100 -y=1.015 -cf=wackygrayscale -ss=8 -w=2000 -h=2000\n```\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./samples/burningshiplady.png\" width=\"70%\"\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheteacat%2Fromanesgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheteacat%2Fromanesgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheteacat%2Fromanesgo/lists"}