koch_curve/
koch_curve.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("F", TurtleAction::Forward(30))
11        .token("+", TurtleAction::Rotate(90))
12        .token("-", TurtleAction::Rotate(-90))
13        .axiom("F")
14        .rule("F => F + F - F - F + F");
15
16    let (mut system, renderer) = builder.finish();
17    system.step_by(7);
18
19    let options = ImageRendererOptionsBuilder::new()
20        .padding(10)
21        .thickness(4.0)
22        .fill_color(Rgb([255u8, 255u8, 255u8]))
23        .line_color(Rgb([0u8, 0u8, 100u8]))
24        .build();
25
26    renderer
27        .render(&system, &options)
28        .save("koch_curve.png")
29        .expect("Failed to save koch_curve.png");
30}