Package visgraph :: Package drawing :: Module catmullrom
[hide private]
[frames] | no frames]

Source Code for Module visgraph.drawing.catmullrom

 1   
2 -def spline4p(t, p_1, p0, p1, p2):
3 x_1a = t * ((2-t) * t - 1) * p_1[0] 4 x_1b = t * ((2-t) * t - 1) * p_1[1] 5 6 x0a = (t * t * (3 * t - 5) + 2) * p0[0] 7 x0b = (t * t * (3 * t - 5) + 2) * p0[1] 8 9 x1a = t * ((4 - 3 * t) * t + 1) * p1[0] 10 x1b = t * ((4 - 3 * t) * t + 1) * p1[1] 11 12 x2a = (t - 1) * t * t * p2[0] 13 x2b = (t - 1) * t * t * p2[1] 14 15 final = ( (x_1a + x0a + x1a + x2a) / 2, 16 (x_1b + x0b + x1b + x2b) / 2) 17 18 return final
19
20 -def calculate_catmullrom(points, steps = 30):
21 ret = [] 22 percents = [ step / float(steps) for step in range(steps) ] 23 for i in xrange(1, len(points) - 2): 24 for t in percents: 25 ret.append(spline4p(t, points[i-1], points[i], points[i+1], points[i+2])) 26 return ret
27