この件に関してここで見つけることができるすべてを読みましたが、コードの一部を理解できる単純なpythonに変換することはできません。
de Casteljauのアルゴリズムのこの非常に良い説明に基づいて、私はこれを得ました:
def divideCurve(p0, cp0, cp1, p1, t):
# p0 and p1 are the start/end points of the bezier curve,
# cp0 and cp1 are the control points
# all points are tuples of their coordinates: p0 = (10, 15)
Ax = ( (1 - t) * p0[0] ) + (t * cp0[0])
Ay = ( (1 - t) * p0[1] ) + (t * cp0[1])
Bx = ( (1 - t) * cp0[0] ) + (t * cp1[0])
By = ( (1 - t) * cp0[1] ) + (t * cp1[1])
Cx = ( (1 - t) * cp1[0] ) + (t * p1[0])
Cy = ( (1 - t) * cp1[1] ) + (t * p1[1])
Dx = ( (1 - t) * Ax ) + (t * Bx)
Dy = ( (1 - t) * Ay ) + (t * By)
Ex = ( (1 - t) * Bx ) + (t * Cx)
Ey = ( (1 - t) * By ) + (t * Cy)
Px = ( (1 - t) * Dx ) + (t * Ex)
Py = ( (1 - t) * Dy ) + (t * Ey)
print Px, Py
for T in range(0, 11, 1):
t = T*0.1
divideCurve(p0, cp0, cp1, p1, t)
しかし、これは曲線に沿って点を不均等に分配します。
ここに考えられる解決策があると思いますが、アーク長関数の逆関数のコードや、それを python に変換する方法を完全に理解していません。ここで別のアプローチを見つけましたが、これは別のアプローチを取っていると思いますが、これもPythonで実装するには十分に理解できていません。
誰かがこれを単純な python に明確化してくれるなら、それは素晴らしいことです。