2 # contributed by Gerhard Schmid and André Wobst
9 # base transformations for the left, center, and right part of the tree
10 ltrafo
= trafo
.rotate(65).scaled(0.4).translated(0, l
* 2.0 / 3.0)
11 ctrafo
= trafo
.rotate(-4).scaled(0.75).translated(0, l
)
12 rtrafo
= trafo
.mirror(90).rotated(-65).scaled(0.35).translated(0, l
)
15 "return transformations for a recursive tree of given depth"
18 subtree
= tree(depth
- 1)
19 r
.extend([t
*ltrafo
for t
in subtree
])
20 r
.extend([t
*ctrafo
for t
in subtree
])
21 r
.extend([t
*rtrafo
for t
in subtree
])
26 # apply the transformation to a "sub"-canvas and insert it into the "main" canvas
27 c
.insert(canvas
.canvas(t
).stroke(path
.line(0, 0, 0, l
)))
28 c
.writetofile("tree", paperformat
="a4")