from math import sin def tsin(theta,terms=4): sine = 0 for n in range(0,terms): sine += (-1) ** n * theta ** (2 * n + 1) / factorial(2 * n + 1) return sine def factorial(x): return (1 if (x == 0) else x * factorial(x-1)) size(300,300) nofill() stroke(0) autoclosepath(False) beginpath(0,150) for i in range(1,300,3): f = sin stroke(0,0,0) curveto((i / 20.0) * 20,150 + f(i / 20.0) * -20,((i + 1) / 20.0) * 20,150 + f((i + 1) / 20.0) * -20,((i+2) / 20.0) * 20,150 + f((i+2) / 20.0) * -20) endpath() for n in range(7,20): beginpath(0,150) f = lambda x: tsin(x,n) stroke((1 if n % 2 else 0),(0 if n % 3 else 1),(0 if n % 4 else 1)) for i in range(1,300,3): curveto((i / 20.0) * 20,150 + f(i / 20.0) * -20,((i + 1) / 20.0) * 20,150 + f((i + 1) / 20.0) * -20,((i+2) / 20.0) * 20,150 + f((i+2) / 20.0) * -20) endpath()