Pookkalam by SHIFIN GEORGE

Code

#---corner circles----
def concentric_circles(x, y, r, n):
    step = r/n
    for i in range(n):
        c = circle(x=x, y=y, r=r,stroke="white",fill="#D2691E")
        show(c)
        r = r-step

w, h = 300, 300
r = 150
n = 150

concentric_circles(w/2, h/2, r, n)
concentric_circles(w/2, -h/2, r, n)
concentric_circles(-w/2, h/2, r, n)
concentric_circles(-w/2, -h/2, r, n)

#---outter circle---

c=circle(r=150,fill="black")
show(c)

#---inner circle---
s = rectangle(x=100, y=0, w=25, h=25)
s = circle(x=140, y=0, r=10,fill="#FF4500")
s1 = s | repeat(20, scale(0.85))
s2 = s1 | repeat(36, rotate(10))
show(s2)

#---orange dot---
def dot(x, y):
    return circle(x=x, y=y, r=5, fill="#FF4500",stroke_width="1")
#---inner repeating circle---
def dotted_circle(x, y, r, dot_location):
    c = circle(x=x, y=y, r=r,stroke="white",stroke_width="1.5")
    
    if dot_location == "center":
        d = dot(x=x, y=y)
    elif dot_location == "bottom":
        d = dot(x=x, y=y-r)
   
    return c + d

c1 = dotted_circle(x=0, y=0, r=25, dot_location="center")
c3 = dotted_circle(x=0, y=-75, r=25, dot_location="bottom") | repeat(36,rotate(10))

show(c1, c3)

x, y = 0, 0
outer_radius = 155
n = 10

# the difference in the radius of two consequetive circles
step = outer_radius/n
r = step

# we start with drawing the inner circle first and then keep on drawing
# the next outer circle and  so on
for i in range(n):
    c = circle(x=x, y=y, r=r,stroke="white")
    show(c)
    r = r+step