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