rendered paste bodyfrom lsystem.generator import stepsfrom lsystem.turtle import Turtlefrom math import piimport cairo axiom = "F"rules = {"F": "F-F+F+F-F"}#axiom = "[F]+[F]+[F]+[F]+[F]+[F]"#rules = {"F": "F[+FF][-FF]FF[+F][-F]FF"}#rules = {"F": "F[+FFF][-FFF]FF[+FF][-FF]FF[+F][-F]FF"}theta = pi / 1.5model = steps(axiom, rules, 6)turtle = Turtle(model, theta)turtle.margin = 10WIDTH, HEIGHT = 400, 350surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)ctx = cairo.Context(surface)scale = turtle.get_scaling_fn((WIDTH, HEIGHT))def draw_line(p1, p2): sp1 = scale(p1) sp2 = scale(p2) ctx.move_to(sp1[0], sp1[1]) ctx.line_to(sp2[0], sp2[1])ctx.set_line_width(4)ctx.set_source_rgb(0, 0, 0.1)turtle.draw(draw_line)ctx.close_path()ctx.stroke()ctx.set_line_width(1)ctx.set_source_rgb(0.3, 0.3, 0.6)turtle.draw(draw_line)ctx.close_path()ctx.stroke()ctx.set_line_width(0.3)ctx.set_source_rgb(0.9, 0.9, 1)turtle.draw(draw_line)ctx.close_path()ctx.stroke()ctx.set_source_rgb(0, 0, 0)ctx.select_font_face("Comic Sans MS")ctx.set_font_size(HEIGHT * 0.03)ctx.move_to(WIDTH * 0.05, HEIGHT * 0.92)ctx.show_text("axiom: " + axiom)ctx.move_to(WIDTH * 0.05, HEIGHT * 0.98)ctx.show_text("rules: F -> " + rules["F"])surface.write_to_png("fractal.png")