【发布时间】:2014-02-01 16:41:38
【问题描述】:
我想画一条贝塞尔曲线,我用了 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
【问题讨论】:
-
mulP 是做什么的。它是生成一个新的向量,还是乘以拥有的向量?因为如果它仍然是笔直的,那么就可以很好地改变前者。
-
它改变了所有者的参数。