def subtri(tri):
return [(tri[0]+tri[1])/2,(tri[0]+tri[2])/2,(tri[1]+tri[2])/2]
def threesubtri(tri):
return [[tri[0],(tri[0]+tri[1])/2,(tri[0]+tri[2])/2],
[tri[1],(tri[1]+tri[0])/2,(tri[1]+tri[2])/2],
[tri[2],(tri[2]+tri[0])/2,(tri[2]+tri[1])/2]]
def Sierpinski(depth=4,tri0=[vector([-0.5,0.0]),vector([0.5,0.0]),vector([0.0,sqrt(3.)/2.0])]):
PLOT=[polygon(tri0,axes=False)]
tri_up=[tri0]
P=PLOT[0]
for j in range(depth):
temp=[]
for k in range(len(tri_up)):
P=P+polygon(subtri(tri_up[k]),color='white')
temp=temp+threesubtri(tri_up[k])
tri_up=temp
PLOT=PLOT+[P]
return PLOT