from visual import * p0 = [0,0] p1 = [3,10] p2 = [7,10] p3 = [10,0] n=3 def fact(n): if n==0: return 1 else: return n*fact(n-1) def comb(n,i): return fact(n)/(fact(i)*fact(n-i)) def B(n,i,t): return comb(n,i)*(t**i)*((1-t)**(n-i)) def Bezier(p0,p1,p2,p3): curve(pos = [p0, p1, p2, p3]) t = arange(0,1.01, 0.01) Bn0t, Bn1t, Bn2t, Bn3t = B(n,0,t), B(n,1,t), B(n,2,t), B(n,3,t) curve(x = Bn0t*p0[0]+Bn1t*p1[0]+Bn2t*p2[0]+Bn3t*p3[0],y = Bn0t*p0[1]+Bn1t*p1[1]+Bn2t*p2[1]+Bn3t*p3[1],color=color.red) Bezier(p0,p1,p2,p3)