Pookkalam by Musafir K

Code

c = circle(r=150, fill='#000000')
show(c)
def sq(side, color):
    return rectangle(w=side, h=side, fill=color, stroke='none')
pp=rectangle(w=194,h=194,stroke='#f8e63d',stroke_width=4) | repeat(2, rotate(45))
bb=rectangle(w=205,h=205,stroke='#f8bd3d',stroke_width=4) | repeat(2, rotate(45))

bsq = sq(side=212, color='#4f0000') | rotate(2.5) | repeat(20, rotate(5))
rsq = sq(side=212*0.95, color='#c70606') | repeat(20, rotate(5))
o1sq = sq(side=212*0.95**2, color='#f36636') | rotate(2.5) | repeat(20, rotate(5))
o2sq = sq(side=212*0.95**3, color='#f8bd3d') | repeat(20, rotate(5))
ysq = sq(side=212*0.95**4, color='#f8e63d') | rotate(2.5) | repeat(20, rotate(5))
b1sq = sq(side=212*0.95**5, color='#7dbcde') | repeat(20, rotate(5))
b2sq = sq(side=212*0.95**6, color='#1c70c8') | rotate(2.5) | repeat(20, rotate(5))
b3sq = sq(side=212*0.95**7, color='#022f8e') | repeat(20, rotate(5))
b4sq = sq(side=212*0.95**8, color='#030c54') | rotate(2.5) | repeat(20, rotate(5))

show(bsq,rsq, o1sq,bb, o2sq, ysq,pp, b1sq, b2sq, b3sq, b4sq)
bc = circle(x=0, r=50, fill='#420909', stroke='none')
rc = circle(x=-5, r=45, fill='#c70606', stroke='none')
o1c = circle(x=-10, r=40, fill='#f36636', stroke='none')
o2c = circle(x=-15, r=35, fill='#f8bd3d', stroke='none')
yc = circle(x=-20, r=30, fill='#f8e63d', stroke='none')
wc = circle(x=-25, r=25, fill='#fcffc7', stroke='none')
b1 = (bc+rc+o1c+o2c+yc+wc) | rotate(-10) | translate(y=50)
b1_ring = b1 | repeat(6, rotate(60)) | scale(1.15)

c2=rectangle(w=138,h=138,fill='#00d100',stroke='#0b610b',stroke_width=3) | rotate(-5) | repeat(3, rotate(5))
c5=rectangle(w=138,h=138,fill='#9a26ff',stroke='#6f2da8',stroke_width=3) | rotate(-50) | repeat(3, rotate(5))
c3=(c2+c5) | repeat(3, rotate(15))

e1=ellipse(w=54,h=38,fill='#ffffff',stroke='none') | translate(y=85) | repeat(10, rotate(36))
e2=ellipse(w=77,h=42,fill='#ff720d',stroke='none') | translate(y=120) | rotate(18) | repeat(10, rotate(36))
e3=circle(r=112,fill='#ff720d',stroke='#ffffff',stroke_width=21)
ss=(e3+e1+e2) | scale(0.64)

z1=point(x=-50,y=0)
z2=point(x=0,y=100)
z3=point(x=50,y=0)
z4=point(x=0,y=-100)
sb=polygon([z1,z2,z3,z4], fill='#4f0000', stroke='none') | scale(0.57) | repeat(10, rotate(18)) | scale(1)
sr=polygon([z1,z2,z3,z4], fill='#c70606', stroke='none') | scale(0.57) | repeat(10, rotate(18)) | scale(0.9)
so1=polygon([z1,z2,z3,z4], fill='#f36636', stroke='none') | scale(0.57) | repeat(10, rotate(18)) | scale(0.8)
so2=polygon([z1,z2,z3,z4], fill='#f8bd3d', stroke='none') | scale(0.57) | repeat(10, rotate(18)) | scale(0.7)
sy=polygon([z1,z2,z3,z4], fill='#f8e63d', stroke='none') | scale(0.57) | repeat(10, rotate(18)) | scale(0.6)
sw=polygon([z1,z2,z3,z4], fill='#fcffc7', stroke='none') | scale(0.57) | repeat(10, rotate(18)) | scale(0.5)

e=ellipse(w=18,h=8,fill='#ffda0a',stroke='#b22222',stroke_width=2) | translate(y=87) | repeat(30, rotate(12))
c1=circle(r=83.5,stroke='#ffda0a',stroke_width=8)
c4=circle(r=5,fill='#ffffff75',stroke='#ff000075',stroke_width=2) | translate(y=68,x=22.5) | repeat(10, rotate(36))
f=(b1_ring) | scale(0.93)
show(f)
ff=(c2+c3+ss+e+c1+c4+sb+sr+so1+so2+sy+sw) | scale(0.9)
show(ff)
c6=ellipse(w=15,h=35,fill='#ff000040',stroke='#70060640') | repeat(60, rotate(12) | scale(0.95)) | repeat(3, rotate(60))
show(c6)