Pookkalam by Christy Thomas

Code

#centre flower
def centre_flower():
    ce1 = ellipse(w=0.9,h=10,fill="#ffffe6", stroke="none") | repeat(10, rotate(18))
    ce2 = circle(r=1, fill="black")
    ce3 = ce1 | translate(y=7) | repeat(10, rotate(36)) | scale(1.05)
    ce4 = circle(r=12.3, fill="yellow", stroke="none")
    return(ce4 + ce3 + ce2 + ce1)

def square_layer(length, fill, stroke):
    layer = rectangle(w=length, h=length, fill=fill, stroke = stroke) | repeat(4, rotate(22.5))
    return(layer)

#outer gradient layers
def outer_layer():
    oa1 = circle(r=91, fill="#ffff1a", stroke_width =0.8)
    ob1 = rectangle(x=0, y=86, w=7.5, h=10, fill="#ffe066", stroke_width =0.8)| repeat(36, rotate(10))
    outer1 = oa1 + ob1
    oa2 = circle(r=101, fill="#ffe066", stroke_width =0.8)
    ob2 = rectangle(x=0, y=96, w=7.5, h=10.2, fill="#ff751a", stroke_width =0.8) | repeat(36, rotate(10))
    outer2 = oa2 + ob2
    oa3 = circle(r=111, fill="#ff751a", stroke_width =0.8)
    ob3 = rectangle(x=0, y=106, w=7.5, h=10.4, fill="#e62e00", stroke_width =0.8) | repeat(36, rotate(10))
    outer3 = oa3 + ob3
    oa4 = circle(r=121.7, fill="#e62e00", stroke_width =0.8 )
    ob4 = rectangle(x=0, y=116, w=7.5, h=11, fill="#990000", stroke_width=0.8) | repeat(36, rotate(10))
    outer4 = oa4+ob4
    return(outer4 + outer3 + outer2 + outer1)

c5 = circle(r=82.5, fill = "#ffff00")

first_layer = square_layer(length=85, fill = "#ff6666", stroke = "none")
second_layer = square_layer(length=97, fill = "#e62e00", stroke = "none")
third_layer = square_layer(length=115, fill = "#990000", stroke = "none")
sqlayer = third_layer + second_layer + first_layer

ellipse_ring = ellipse(w=163, h=10, fill = "#ba2252", stroke="none") |rotate(22.5/2) | repeat(8, rotate(22.5))
circle_ring = circle(x=9, y=46, r=7, fill="#ba2252", stroke= "none") | repeat(16, rotate(22.5))
ring = ellipse_ring + circle_ring

c6 = circle(r=48, fill = "#004d00", stroke = "none")
star1 = ellipse(w=60, h=8, fill="#ffff1a", stroke="none") | repeat(3, rotate(60))
star2 = ellipse(w=60, h=8, fill="#ffffb3", stroke="none") | rotate(30) | repeat(3, rotate(60))
star3 = ellipse(w=60, h=8, fill="orange", stroke="none") | rotate(15) | repeat(6, rotate(30))
star4 = ellipse(w=78, h=10, fill="#ff4d4d", stroke="none") | rotate(7.5) | repeat(12, rotate(15))
star5 = ellipse(w=95, h=12.5, fill="#b30000", stroke="none") | repeat(12, rotate(15))
star = c6 + star5 + star4 + star3 + star2 + star1

pookkalam = outer_layer() + c5 + sqlayer + ring + star + centre_flower()

outercircle = circle(r=142.5, fill = "#e60000", stroke="#660000", stroke_width=7)

#creating pookkalam replica
replica = pookkalam | translate(y=905) | repeat(24, rotate(15)) | scale(0.135)
final_pookkalam = outercircle + replica + pookkalam
show(final_pookkalam)