{"id":13616830,"url":"https://github.com/two-twelve/fernery","last_synced_at":"2025-04-14T03:31:43.446Z","repository":{"id":149988331,"uuid":"616393292","full_name":"two-twelve/fernery","owner":"two-twelve","description":"A CLI tool for generating images of ferns 🌿 and other Iterated Function Systems","archived":false,"fork":false,"pushed_at":"2023-12-31T12:23:31.000Z","size":718,"stargazers_count":48,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-08T01:37:17.857Z","etag":null,"topics":["barnsley-fern","cli","cli-app","cli-tool","dragon-curve","fractal","fractal-generators","fractal-images","fractal-rendering","fractals","generative-art","haskell","haskell-cli","iterated-function-system","koch-snowflake","prs-welcome","sierpinski","sierpinski-gasket","sierpinski-triangle"],"latest_commit_sha":null,"homepage":"","language":"Haskell","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/two-twelve.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-03-20T09:57:34.000Z","updated_at":"2024-06-28T05:01:45.000Z","dependencies_parsed_at":"2024-04-09T11:45:51.040Z","dependency_job_id":null,"html_url":"https://github.com/two-twelve/fernery","commit_stats":null,"previous_names":["two-twelve/fernery"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/two-twelve%2Ffernery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/two-twelve%2Ffernery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/two-twelve%2Ffernery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/two-twelve%2Ffernery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/two-twelve","download_url":"https://codeload.github.com/two-twelve/fernery/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248815578,"owners_count":21165950,"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":["barnsley-fern","cli","cli-app","cli-tool","dragon-curve","fractal","fractal-generators","fractal-images","fractal-rendering","fractals","generative-art","haskell","haskell-cli","iterated-function-system","koch-snowflake","prs-welcome","sierpinski","sierpinski-gasket","sierpinski-triangle"],"created_at":"2024-08-01T20:01:33.827Z","updated_at":"2025-04-14T03:31:38.436Z","avatar_url":"https://github.com/two-twelve.png","language":"Haskell","readme":"# Fernery 🌿\n\nA CLI tool for generating images of ferns and other [Iterated Function Systems](https://en.wikipedia.org/wiki/Iterated_function_system).\n\n\n\n## Getting Started\n\nInstall [stack](https://docs.haskellstack.org/en/stable/install_and_upgrade/), then:\n\n```bash\ngit clone git@github.com:TheTeaCat/fernery.git\ncd fernery\nstack build\nstack exec fernery-exe\n```\n\nThis should generate an image of a Barnsley fern at [./fern.png](./fern.png) by default, with colours reminiscent of an [Anna Atkins cyanotype](https://www.moma.org/artists/231). \n\nVarious options are available to customise the appearance of the ferns. To see the supported options, do:\n\n```bash\nstack exec -- fernery-exe --help\n```\n\n### Installing with Homebrew (macOS)\n\nFernery is also available to install from our Homebrew Tap.\n\n```bash\nbrew tap two-twelve/tap\nbrew install fernery\nfernery --help\n```\n\n## [FractalTees.Shop](https://fractal-tees.teemill.com/) 🛍\n\nA selection of images generated using Fernery are available printed on T-shirts and tote bags at [fractaltees.shop](https://fractal-tees.teemill.com/).\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://fractal-tees.teemill.com/product/barnsley-fern/\"\u003e\n    \u003cimg width=\"30%\" src=\"https://images.teemill.com/hthlgpp2ekwkdsanevfm7euvrohiiywzkwrblrcfabuqtw8h.png.webp?w=640\u0026h=657\u0026v=2\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://fractal-tees.teemill.com/product/leptosporangiate/\"\u003e\n    \u003cimg width=\"30%\" src=\"https://images.teemill.com/uwck3iw0pruwtoahmyeowm40ujjuvwpd8c6mlohdcop70gyv.png.webp?w=640\u0026h=657\u0026v=2\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://fractal-tees.teemill.com/product/thelypteridaceae-shirt/\"\u003e\n    \u003cimg width=\"30%\" src=\"https://images.teemill.com/i1rj0flwe6eq8crh5iqwgu75y0iyuzfo5sqcydmffmv5jb5v.png.webp?w=640\u0026h=657\u0026v=2\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n## Example Images\n\nThis list of examples is currently exhaustive of the IFSs provided in Fernery, but I'd love to see more added to this little CLI tool. PRs are welcome! 🧑‍🎨\n\n- [Barnsley Fern](#Barnsley-Fern)\n- [Leptosporangiate Fern](#Leptosporangiate-Fern)\n- [Thelypteridaceae Fern](#Thelypteridaceae-Fern)\n- [The Sierpinski Gasket](#The-Sierpinski-Gasket)\n- [The Sierpinski Carpet](#The-Sierpinski-Carpet)\n- [The Sierpinski Pentagon](#The-Sierpinski-Pentagon)\n- [The Levy Dragon](#The-Levy-Dragon)\n- [The Heighway Dragon](#The-Heighway-Dragon)\n- [McWorter's Pentigree](#McWorters-Pentigree)\n- [The Koch Curve](#The-Koch-Curve)\n- [The Koch Snowflake](#The-Koch-Snowflake)\n- [DavidLDewey Fractal](#DavidLDewey-Fractal)\n- [Tree Fractal](#Tree-Fractal)\n\n\n\n### Barnsley Fern\n\n```bash\nstack exec -- fernery-exe -f barnsley\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/barnsley.png\"\u003e\n\u003c/p\u003e\n\n\n### Leptosporangiate Fern\n\nThe transforms used in this fern were found [here](https://en.wikipedia.org/wiki/File:Barnsley_fern_mutated_-Leptosporangiate_fern.PNG).\n\n```bash\nstack exec -- fernery-exe -f leptosporangiate -s '(210, -160)'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/leptosporangiate.png\"\u003e\n\u003c/p\u003e\n\n\n### Thelypteridaceae Fern\n\nThe transforms used in this fern were found [here](https://en.wikipedia.org/wiki/File:Barnsley_fern_with_different_coefficients_plotted_with_VisSim.PNG).\n\n```bash\nstack exec -- fernery-exe -f thelypteridaceae -s '(-210, 125)'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/thelypteridaceae.png\"\u003e\n\u003c/p\u003e\n\n\n### The Sierpinski Gasket\n\n```bash\nstack exec -- fernery-exe -f sierpinskiGasket -o '(500,1000)' -s '(500,500)' -c 'PixelRGBA8 0 0 0 255' -b 'PixelRGBA8 255 255 255 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/sierpinskiGasket.png\"\u003e\n\u003c/p\u003e\n\n\n### The Sierpinski Carpet\n\n```bash\nstack exec -- fernery-exe -f sierpinskiCarpet -o '(50,50)' -s '(900,900)' -i 10000000 -c 'PixelRGBA8 255 255 255 255' -b 'PixelRGBA8 114 47 55 255' \n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/sierpinskiCarpet.png\"\u003e\n\u003c/p\u003e\n\n\n### The Sierpinski Pentagon\n\n```bash\nstack exec -- fernery-exe -f sierpinskiPentagon -o '(250,875)' -s '(500,500)' -b 'PixelRGBA8 135 206 235 255' -c 'PixelRGBA8 0 0 0 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/sierpinskiPentagon.png\"\u003e\n\u003c/p\u003e\n\n\n### The Levy Dragon\n\n```bash\nstack exec -- fernery-exe -f levyDragon -o '(275,250)' -s '(450,450)' -d '(1000,800)' -b 'PixelRGBA8 251 206 177 255' -c 'PixelRGBA8 0 0 0 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./examples/levyDragon.png\"\u003e\n\u003c/p\u003e\n\n\n### The Heighway Dragon\n\n```bash\nstack exec -- fernery-exe -f heighwayDragon -o '(250,500)' -d '(1000, 800)' -s '(600,600)' -c 'PixelRGBA8 0 0 0 255' -b 'PixelRGBA8 255 255 255 255' -i 2000000\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./examples/heighwayDragon.png\"\u003e\n\u003c/p\u003e\n\n\n### McWorter's Pentigree\n\n```bash\nstack exec -- fernery-exe -f mcWortersPentigree -o '(130,330)' -s '(800,800)' -b 'PixelRGBA88 202 231 193 255' -c PixelRGBA88 0 0 0 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/mcWortersPentigree.png\"\u003e\n\u003c/p\u003e\n\n\n### The Koch Curve\n\n```bash\nstack exec -- fernery-exe -f kochCurve -s '(900,-900)' -o '(50,450)' -d '(1000,600)' -b 'PixelRGBA8 120 81 169 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./examples/kochCurve.png\"\u003e\n\u003c/p\u003e\n\n\n### The Koch Snowflake\n\n```bash\nstack exec -- fernery-exe -f kochSnowflake -o '(500,500)' -s '(450,450)' -b 'PixelRGBA8 220 243 255 255' -c 'PixelRGBA8 57 109 124 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/kochSnowflake.png\"\u003e\n\u003c/p\u003e\n\n\n### DavidLDewey Fractal\n\nThe transforms used to generate this fractal are from an old worksheet authored by David L. Dewey which can be found [here](https://courses.cs.washington.edu/courses/cse142/01sp/misc/fractal_lab.htm).\n\n```bash\nstack exec -- fernery-exe -f davidLDewey -s '(3,3)' -o '(850,500)' -d '(1700,1000)' -b 'PixelRGBA8 255 255 255 255' -c 'PixelRGBA8 0 0 0 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./examples/davidLDewey.png\"\u003e\n\u003c/p\u003e\n\n\n### Tree Fractal\n\nThis fractal can also be found on Peter E. Francis' [IFS Fractals](http://ifs-fractals.herokuapp.com/playground/tree).\n\n```bash\nstack exec -- fernery-exe -f treeFractal -o '(50,950)' -s '(900,-900)' -c 'PixelRGBA8 0 0 0 255' -b 'PixelRGBA8 255 255 255 255'\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"./examples/treeFractal.png\"\u003e\n\u003c/p\u003e\n\n\n## Acknowledgements\n\nThe following have been useful sources of Iterative Function Systems to add to Fernery:\n\n- [Larry Riddle's Classic Iterated Function Systems](https://larryriddle.agnesscott.org/ifs/ifs.htm)\n- [David L. Dewey's Generating Fractals with Affine Transformations](https://courses.cs.washington.edu/courses/cse142/01sp/misc/fractal_lab.htm)\n- [Peter E. Francis' IFS Fractals](http://ifs-fractals.herokuapp.com/)\n","funding_links":[],"categories":["Haskell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwo-twelve%2Ffernery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwo-twelve%2Ffernery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwo-twelve%2Ffernery/lists"}