def compute_vs(g): vs = g.vspace() sqrtsz = (g.size**.5)-1 polynom = lambda x: x<=sqrtsz and .1**(sqrtsz-x) or 1./(1.+(x-sqrtsz)) ll=[(l, direction(s.n2o(l), grp.color)) for grp in g.groups for s in grp for l in s.liberties] for x in xrange(2): #print ll for i, d in ll: h = (i.heightx+i.heighty)*.5 vs[i] = vs[i]+d*polynom(h) ll = [ (n, d) for i, d in ll for n in i.o2n(d.value) if n.color is None ] return vs
def vspace(self): return dict(((i, direction()) for i in self.intersections.values()))
def clean_vs(g): vs = g.vspace() v2 = compute_vs(g) for k in xrange(2): for i in vs: vs[i]=v2[i] for i in v2: v2[i] = reduce(direction.__add__, (vs[n]/2 for n in i.neighbours if n.color is None), direction()) return v2