Source code for visgraph.drawing.catmullrom

def spline4p(t, p_1, p0, p1, p2):
[docs] x_1a = t * ((2-t) * t - 1) * p_1[0] x_1b = t * ((2-t) * t - 1) * p_1[1] x0a = (t * t * (3 * t - 5) + 2) * p0[0] x0b = (t * t * (3 * t - 5) + 2) * p0[1] x1a = t * ((4 - 3 * t) * t + 1) * p1[0] x1b = t * ((4 - 3 * t) * t + 1) * p1[1] x2a = (t - 1) * t * t * p2[0] x2b = (t - 1) * t * t * p2[1] final = ( (x_1a + x0a + x1a + x2a) / 2, (x_1b + x0b + x1b + x2b) / 2) return final def calculate_catmullrom(points, steps = 30):
[docs] ret = [] percents = [ step / float(steps) for step in range(steps) ] for i in xrange(1, len(points) - 2): for t in percents: ret.append(spline4p(t, points[i-1], points[i], points[i+1], points[i+2])) return ret