fractal_binary_tree/
fractal_binary_tree.rs

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