贝塞尔曲线笔直

时间:2014-02-01 16:41:38

标签: python bezier pyglet

我想绘制Bezier曲线,我使用4个控制点,但我的线仍然是直线。

我有一个处理点的类。我使用pyglet绘制输出。

def Bezier(P0,P1,P2,P3, t):
    t2 = t*t
    t3 = t2 * t
    mt = 1-t
    mt2 = mt * mt
    mt3 = mt2 * mt

    P0.mulP(mt)

    P1.mulP(3)
    P1.mulP(mt2)
    P1.mulP(t)

    P2.mulP(mt)
    P2.mulP(3)
    P2.mulP(t2)

    P3.mulP(t3)

    P0.addP(P1)
    P0.addP(P2)
    P0.addP(P3)

    return P0

编辑: 我还在玩这个问题。我有一个函数来计算贝塞尔曲线的坐标,它显示了同样的事情......

def Bezier3deg(P0,P1,P2,t):
    ReP = points.point()

    t1 = (1 - t) * (1 - t)
    P0.mulP(t1)

    t2 = 2 * (1-t) * t
    P1.mulP(t2)

    t3 = t*t
    P2.mulP(t3)

    ReP.addP(P0)
    ReP.addP(P1)
    ReP.addP(P2)
    return ReP

1 个答案:

答案 0 :(得分:0)

好吧,我明白了,问题是我的python技巧。 Bezier函数始终更改控制点的原始坐标。修好后,曲线很好。