Attractors in Rust. See Paul Bourke's site on Peter de Jong attractors for an explanation. All code is commented. This implementation is tested on *nix only.
rustc -C opt-level=3 main.rs
Three color functions are provided:
color::amber
: monochromatic shades of amber on a white backgroundcolor::sparks
: monochromatic shades of orange on a black backgroundcolor::heat
: heat-map-inspired; black->blue->cyan->green->yellow->red->whitecolors::viridis
: accurate recreation of ColorBrewer's viridiscolors::blue_purple
: black->blue->purple
The fourth argument to make_image_data
in the file
module takes a color function. Any function that fits
fn(u8) -> [u8; 3]
works (takes a density from 0-255 and returns [r, g, b]).
To see a test image for a color function, you can use the function
file::test_color(color: fn(u8) -> [u8; 3], file_name: &'static str) -> Result<()>
and get an image like this (for viridis
):
- add new attractor functions
- allow for writing to more than just PPM