{"id":22656912,"url":"https://github.com/icelk/strange-attractor-renderer","last_synced_at":"2025-08-25T06:35:09.472Z","repository":{"id":37481956,"uuid":"470325621","full_name":"Icelk/strange-attractor-renderer","owner":"Icelk","description":"A multithreaded strange attractor renderer","archived":false,"fork":false,"pushed_at":"2025-01-28T20:55:03.000Z","size":12520,"stargazers_count":62,"open_issues_count":0,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-03T12:12:20.176Z","etag":null,"topics":["multithreaded","renderer","strange-attractors"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Icelk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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,"publiccode":null,"codemeta":null}},"created_at":"2022-03-15T20:43:25.000Z","updated_at":"2025-03-03T16:12:59.000Z","dependencies_parsed_at":"2025-01-28T21:40:09.522Z","dependency_job_id":null,"html_url":"https://github.com/Icelk/strange-attractor-renderer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Icelk/strange-attractor-renderer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fstrange-attractor-renderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fstrange-attractor-renderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fstrange-attractor-renderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fstrange-attractor-renderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Icelk","download_url":"https://codeload.github.com/Icelk/strange-attractor-renderer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fstrange-attractor-renderer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272013595,"owners_count":24858482,"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","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["multithreaded","renderer","strange-attractors"],"created_at":"2024-12-09T10:16:51.987Z","updated_at":"2025-08-25T06:35:09.449Z","avatar_url":"https://github.com/Icelk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Strange [attractor](https://en.wikipedia.org/wiki/Attractor) renderer\n\nA library and CLI to generate strange attractors.\n\n![Poisson saturne attractor](media/poisson-saturne.png)\n\nBy default, this renders the poisson saturne attractor. This should be easy to change through coefficients (when using this as a library), and possibly in the binary (if I add the feature).\nThis can however only render a subset of attractors, those of the polynomial Sprott type (see this page from [chaoscope](http://www.chaoscope.org/doc/attractors.htm)). Adding more should be relatively easy.\n\n## Features\n\nAll of these are optional.\n\n-   PNG \u0026 BMP export\n-   16-bit\n-   transparency\n-   render depth texture\n-   CLI\n-   multithreaded\n-   brightness control\n-   [shell completion](#shell-completion)\n\n## Installation\n\nYou need to have the latest version of stable [Rust](https://rust-lang.org/) installed on your system.\nClone this repo. Run `cargo install --path . --profile production` to install the binary to your user's path.\n\n## Documentation\n\nDocumentation of the main branch can be found at [doc.icelk.dev](https://doc.icelk.dev/strange-attractor-renderer/strange_attractor_renderer/).\n\nTo document with information on which cargo features enables the code,\nset the environment variable `RUSTDOCFLAGS` to `--cfg docsrs`\n(e.g. in Fish `set -x RUSTDOCFLAGS \"--cfg docsrs\"`)\nand then run `cargo +nightly doc`.\n\n## Performance\n\nThis should be the fastest possible both in multithreaded and single-threaded mode.\nWhen running multithreaded, the main limiting factor is memory speed, not processing power (if you don't have a potato CPU, that is).\n\n## Animations\n\nUsing the `sequence` subcommand, you can generate a series of images. Then use the following command to encode it into a H.264 video.\nSee it's `--help` flag for available options.\n\n```shell\n$ ffmpeg -i attractor%02d.png -vcodec libx264 -crf 17 -pix_fmt yuv420p out.mp4\n```\n\nYou need to change the `%02d` part to the length of the frame index part of the outputted file name.\n\n## Acknowledgements\n\nMany thanks to Björn von Sydow for the inspiration, initial code design, and continuing feedback.\n\n## Shell completion\n\nUsing the subcommand `completion`, the binary automatically generates shell completions for your shell and tries to put them in the appropriate location.\n\nWhen using Bash or Zsh, you should run the binary as root, as we need root privileges to write to their completion directories.\nAlternatively, use the `--print` option to yourself write the completion file.\n\n## Images\n\nThese are generated using the following commands:\n\n```shell\n# Build binary\n$ cargo build --release\n\n# poisson-saturne.png\n$ target/release/strange-attractor-renderer -i1000000000 -b -0.25\n# solar-sail.png\n$ target/release/strange-attractor-renderer -i1000000000 -h2000 -w1800 -b -0.1 -p solar-sail\n# solar-sail-220deg.png:\n$ target/release/strange-attractor-renderer -i1000000000 -h2000 -w1800 -p solar-sail -a 220\n```\n\n![Poisson saturne attractor](media/poisson-saturne.png)\n![Solar sail attractor](media/solar-sail.png)\n![Solar sail attractor from -140°](media/solar-sail-220deg.png)\n\n## License\n\nThis library and binary artefacts are licensed under the [GNU LGPLv3](COPYING.LESSER).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficelk%2Fstrange-attractor-renderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficelk%2Fstrange-attractor-renderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficelk%2Fstrange-attractor-renderer/lists"}