fractal_plant/
fractal_plant.rs

1use image::Rgb;
2
3use dcc_lsystem::renderer::{ImageRendererOptionsBuilder, Renderer};
4use dcc_lsystem::turtle::{TurtleAction, TurtleLSystemBuilder};
5
6fn main() {
7    let mut builder = TurtleLSystemBuilder::new();
8
9    builder
10        .token("X", TurtleAction::Nothing)
11        .token("F", TurtleAction::Forward(200))
12        .token("+", TurtleAction::Rotate(25))
13        .token("-", TurtleAction::Rotate(-25))
14        .token("[", TurtleAction::Push)
15        .token("]", TurtleAction::Pop)
16        .axiom("X")
17        .rule("X => F + [ [ X ] - X ] - F [ - F X ] + X")
18        .rule("F => F F")
19        .rotate(70);
20
21    let (mut system, renderer) = builder.finish();
22    system.step_by(6);
23
24    let options = ImageRendererOptionsBuilder::new()
25        .padding(20)
26        .thickness(18.0)
27        .fill_color(Rgb([255u8, 255u8, 255u8]))
28        .line_color(Rgb([0u8, 100u8, 0u8]))
29        .build();
30
31    renderer
32        .render(&system, &options)
33        .save("fractal_plant.png")
34        .expect("Failed to save fractal_plant.png");
35}