import math

def bezier(p):
    #approximation de la longueure
    dx,dy=0.0,0.0
    for i in range(len(p)-1):
        dx += abs(p[i][0] - p[i+1][0])
        dy += abs(p[i][1] - p[i+1][1])
    l = math.hypot(dx,dy)
    #la courbe
    pl = []
    for j in range(int(l)):
        r = j/l
        pp = p
        while len(pp)>1:
            pp = rbezier(pp,r)
        pl.append(pp[0])
    return pl

def rbezier(p,r):
    pp = []
    for i in range(len(p)-1):
        pp.append(bpoint(p[i],p[i+1],r))
    return pp

def bpoint(v1,v2,i):
    (x1,y1) = v1
    (x2,y2) = v2
    #linear bezier
    dx = x2-x1
    dy = y2-y1
    px = x1 + (dx*i)
    py = y1 + (dy*i)
    return (px,py)
