Pookkalam by Ashik K L

Code

back=rectangle(0,0,300,300,fill='white')

def square(color, side):
    return rectangle(w=side, h=side, fill=color, stroke='none')

#outer portion
c1=circle(0,0,135,fill="yellow",stroke_width=5,stoke='blue')
outer_layer1=square(side=135,color='#8C0000') | repeat(15,  rotate(15))
outer_layer2=square(side=151.5,color='gold') | rotate(22.5)|repeat(3,  rotate(15))
outer_layer3=square(side=151.5,color='#F98404') | rotate(67.5)|repeat(3,  rotate(15))
outer_layer4=square(side=170,color='orange') | rotate(30)|repeat(2,  rotate(15))
outer_layer5=square(side=170,color='#FF570A') | rotate(30)|repeat(10,  rotate(15))
outer_layer6=square(side=190,color='#AC0D0D') | rotate(37.5)|repeat(1,  rotate(15))
outer_layer7=square(side=190,color='#FA1E0E') | rotate(37.5)|repeat(10,  rotate(15))
outer=combine((c1,outer_layer7,outer_layer6,outer_layer5,outer_layer4,outer_layer3,outer_layer2,outer_layer1))

#middle portion
middle_layer1=circle(0,0,82,fill='#000000',stroke='black',stroke_width=2)
middle_layer2=ellipse(0,0,300,400, stroke="none",fill='#E48900')
middle_layer3=ellipse(0,0,200,400, stroke="none",fill='#BE0000')
shape2=middle_layer2| scale(0.125) | translate(y=55) | repeat((24), rotate(60) | scale(1)) 
shape = middle_layer3| scale(0.25) | translate(y=30) | repeat((12), rotate(30) | scale(1))
middle_layer4=ellipse(0,0,90,20, stroke="none",fill='#000000')
middle_layer5=ellipse(0,0,120,120, stroke="none",fill='yellow')
shape3 = middle_layer4| scale(0.25) | translate(y=60) | repeat((18), rotate(20) | scale(1))
middle=combine((middle_layer1,shape,shape2,middle_layer5,shape3))
 
#creating vallam + inner portion
p1=point(x=-80,y=30)
p2=point(x=-40,y=20)
p3=point(x=-50,y=10)
p4=point(x=-20,y=-5)
p5=point(x=80,y=35)
p6=point(x=10,y=-20)
p7=point(x=-30,y=-30)
p8=point(x=-20,y=-30)
p9=point(x=-40,y=-30)
l1=polygon([p1,p2,p3,p4,p5,p6,p7,p8,p9],fill='black')+circle(-75,25,2,fill='yellow')+circle(-65,22.5,2.,fill='yellow')+circle(-55,20,2.5,fill='yellow')+ellipse(-21,-22,47,20,fill='black')  
shape4=l1 |scale(0.65) | translate(y=0) | repeat((1), rotate(0) | scale(1))
l2=rectangle(0,10,3,30,fill='brown')+rectangle(0,-20,5,40,fill='brown')
shape5=l2|scale(1) |  repeat((1), rotate(2) | scale(0.97))
shape8=l2|scale(0.8) | translate(10,10)
shape9=l2|scale(0.7) | translate(20,15) 
shape10=l2|scale(0.6) | translate(30,20) 
shape11=l2|scale(0.5) | translate(40,25) 
shape12=l2|scale(1) | translate(-5,5)
l3=ellipse(0,0,90,100, stroke="none",fill='#F98404')
shape6 = l3| scale(0.25) | translate(y=40) | repeat((18), rotate(20) | scale(1))
shape7=circle(0,0,30,fill='orange',stroke='none')
inner=combine((shape6,shape7,shape8,shape9,shape10,shape11,shape12,shape5,shape4))

s=combine((back,outer,middle,inner))
show(s)