##################################
#bezier curve
##################################

#dependency
##################################
import math

#function
##################################
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((x1,y1),(x2,y2),i):
    #linear bezier
    dx = x2-x1
    dy = y2-y1
    px = x1 + (dx*i)
    py = y1 + (dy*i)
    return (px,py)
