fractal_binary_tree/
fractal_binary_tree.rs1use 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}