### Superfolia | source code

```# Author: Tom De Smedt, 2006

zoom = 3
size(2012.6/zoom, 2863/zoom)

bg = [
color(0.70, 0.70, 0.65),
color(0.97, 0.97, 0.92)
]

colors = [
color(0.57, 0.57, 0.44),
color(0.29, 0.27, 0.08),
color(0.16, 0.16, 0.05),
color(0, 0, 0),
color(0, 0, 0)
]
colors.reverse()

# Given a list of colors,
# calculate intermediary steps.
# The plants go from black to green,
# giving them a nice sense of depth.
l = len(colors)-1
a = int(1.0*i/n*l)
a = min(a+0, l)
b = min(a+1, l)
base = 1.0 * n/l * a
d = (i-base) / (n/l)
r = colors[a].r*(1-d) + colors[b].r*d
g = colors[a].g*(1-d) + colors[b].g*d
b = colors[a].b*(1-d) + colors[b].b*d
return color(r, g, b)

from math import sqrt
n = 800/zoom
r = sqrt(WIDTH*WIDTH + HEIGHT*HEIGHT)
for i in range(n):
dx = (WIDTH-r)/2
dy = (HEIGHT-r)/2
oval(dx+i, dy+i, r-i*2, r-i*2)

svg = ximport("svg")
points = 100 # this will take a while to render.

nofill()
stroke(0)
strokewidth(0.5)
transform(CORNER)
scale(4.5 / zoom)
translate(-110, 35)

# Quick preview of the SVG:
#for path in paths:
#    if random() > 0.25:
#        drawpath(path)

for path in paths:
if path.length > 900:
n = points * 2
d = 10
else:
n = points
d = 30

prev = None
autoclosepath(False)
nofill()
for i, pt in zip(range(n), path.points(n)):

clr.alpha = 0.7 + random(0.3)
stroke(clr)
strokewidth(random(0.04,0.2) * zoom)

if prev != None:
beginpath(prev.x, prev.y)
curveto(
pt.ctrl1.x - random(d),
pt.ctrl1.y,
pt.ctrl2.x,
pt.ctrl2.y + random(d),
pt.x,
pt.y
)
curveto(
pt.ctrl1.x + random(d/3),
pt.ctrl1.y,
pt.ctrl2.x,
pt.ctrl2.y - random(d/3),
pt.x + random(-d*2/3, d*2/3),
pt.y + random(-d/3, d/3)
)
endpath()
prev = pt```