Bezier曲线的递推算法
Bezier曲线的递推(de Casteljau)算法
• 设P0、P02、P2是一条 抛物线上顺序三个不 同的点。过P0和P2点 的两切线交于P1点, 在P02点的切线交P0P1 和P2P1于P01和P11, 则如下比例成立:
• 当P0,P2固定,引入参数t,令上述比值为t:1-t), 即有:
• t从0变到1,第一、二式就分别表示控制二边形的 第一、二条边,它们是两条一次Bezier曲线。将 一、二式代入第三式得:
这便是著名的de Casteljau算法。用这一递推公式,在 给定参数下,求Bezier曲线上一点P(t)非常有效。
• 当n=3时,de casteljau算法递推出 的Pik呈直角三角形, 对应结果如图所示。 从左向右递推,最右 边点P03即为曲线上的 点。
• 当t从0变到1时,它表示了由三顶点P0、P1、 P2三点定义的一条二次Bezier曲线。并且表明: 这二次Bezier曲线P02可以定义为分别由前两个 顶点(P0,P1)和后两个顶点(P1,P2)决定的一次 Bezier曲线的线性组合。依次类推,由四个控 制点定义的三次Bezier曲线P03可被定义为分别 由(P0,P1,P2)和(P1,P2,P3)确定的二条二次 Bezier曲线的线性组合,由(n+1)个控制点 Pi(i=0,1,...,n)定义的n次Bezier曲线P0n可被定 义为分别由前、后n个控制点定义的两条(n-1) 次Bezier曲线P0n-1与P1n-1的线性组合: