Code
# first layer
last_circle = circle(r=150,fill='#660039',stroke='none')
v1 = rectangle(h=155,w=155,fill='yellow',stroke='none') | rotate(5) | repeat(10,rotate(20))
v2 = rectangle(h=170,w=170,fill='#e69500',stroke='none') | repeat(10,rotate(20))
v3 = rectangle(h=190,w=190,fill='red',stroke='none') | rotate(5) | repeat(10,rotate(20))
v4 = rectangle(h=210,w=210,fill='#990000',stroke='none') | repeat(10,rotate(20))
show(last_circle+v4+v3+v2+v1)
def triangle(px,py,pz,color) :
return polygon([px,py,pz],fill=color,stroke='none')
# middle layer
outer_circle = circle(r=100,fill='#004600',stroke='none')
t1 = rectangle(h=100,w=100,fill='#ff008e',stroke='none') | repeat(3,rotate(30))
t2 = rectangle(h=120,w=120,fill='#660039',stroke='none') | repeat(3,rotate(30))
t3 = rectangle(h=140,w=140,fill='white',stroke='none') | repeat(3,rotate(30))
tp1 = point(x=0,y=100)
tp2 = point(x=10,y=0)
tp3 = point(x=-10,y=0)
t4 = triangle(tp1,tp2,tp3,'#800000') | repeat(12,rotate(30))
show(outer_circle+t3+t2+t1+t4)
# last layer
inner_bud = circle(r=20,fill='white',stroke='none')
orange_petal = ellipse(h=45,w=20,x=0,y=15,fill='#ffb733',stroke='none') | rotate(30) | repeat(6,rotate(60))
p1 = point(x=0,y=50)
p2 = point(x=20,y=0)
p3 = point(x=-20,y=0)
inner_circle = circle(r=50,fill='#004600',stroke='none')
show(inner_circle)
show(triangle(p1,p2,p3,'yellow') | repeat(6,rotate(60)))
show(orange_petal)
show(inner_bud)
# bud design
for i in range(1,3) :
show(rectangle(h=15*i,w=10*i,fill='none',stroke="#660039",) | repeat(6,rotate(30)))