from visual import * def pyramid(a, b, c, d, level): if (level == 0): convex(pos=[a,b,c, d]) numpyramids = 1 else: e = (a+b)/2 f = (a+c)/2 g = (b+c)/2 h = (a+d)/2 i = (b+d)/2 j = (c+d)/2 numpyramids = pyramid(a,e,f,h, level-1) + pyramid(b,e,g,i, level-1) \ + pyramid(c,f,g,j, level-1)+ pyramid(d,h,i,j, level-1) return numpyramids n = 0 m = pyramid(vector(-0.8,-.5,0), vector(0,0.8,0), vector(0.8,-.5,0), vector(0,0,1), n) print m,"pyramids at level", n, "at length scale",(1/2.)**n