当前位置:文档之家› 贝塞尔曲线

贝塞尔曲线

贝塞尔曲线
20世纪70年代,雷诺汽车公司的Pierre Bezier 和雪铁龙汽车公司的Paul de Casteljau 各自独立地推导出了CAD/CAM 中广泛应用的贝塞尔曲线,这些参数多项式是一类逼近样条。

与贝塞尔曲线紧密相关的是伯恩斯坦多项式,这里将Bernstein 多项式记作,()i n B x ,该多项式定义如下:
,()(1),01i n n i i n B x x x x i -⎛⎫=-≤≤ ⎪⎝⎭ (1.1) 其中i=0,1,2,…n 。

在Mathematica 中构造该函数可以使用语句:
Bernstein[x_,i_,n_]:=ExpandAll[Binomial[n,i]∗x^i ∗(1−x)^(n −i)]
Casteljau 最开始是使用递归方法隐式地定义的,该递推关系如下:
0,0,,11,1()1
()(1)()()i n i n i n B x B x x B x xB x ---==-+ (1.2)
其中i=1,2,3,…n-1。

通常,n 阶伯恩斯坦多项式一共有(n+1)个,例如四阶的伯恩斯坦多项式为:
234
0,4234
1,4234
2,434
3,444,4()1464()412124()6126()44()B x x x x x B x x x x x B x x x x B x x x B x x =-+-+=-+-=-+=-= (1.3)
除此之外,还有其他一些性质:
非负性
多项式在[0,1]上是非负的,这个结论是显然的,对于四阶伯恩斯坦多项式,函数图形如下:
规范性
,0()1n i n i B x ==∑ (1.4) 原因很简单,对于二项式:
0()n n i n i i n x y x y i -=⎛⎫+= ⎪⎝⎭∑ (1.5) 令x=x ,y=1-x ,代入得证。

导数 ,1,1,1()(()())i n i n i n d B x n B x B x dx ---=- (1.6) 基
n 阶伯恩斯坦多项式组成阶数小于等于n 的所有多项式的一个基空间。

根据该性质,所有n 阶多项式都可以被n 阶伯恩斯坦多项式线性表示。

如果给定一个控制点集P ,其中P i =(x i ,y i ),则贝塞尔曲线被定义为:
,0()()n i i n i P x PB x ==∑
(1.7)
该公式中的控制点是表示平面中的x 和y 坐标的有序对。

x 坐标和y 坐标可单独由该式推导出。

例如求控制点(1,2)、(2,-3)、(3,1)、(4,-2)所表出的贝塞尔曲线,则:
0,31,32,33,30,31,32,33,31*()2*()3*()4*()2*()3*()1*()2*()
Px B t B t B t B t Py B t B t B t B t =+++=-+- (1.8)
展开有: 2321521361710Py t Px t t t t =++≤=-≤-其中
(1.9)
在Mathematica 中绘制图形命令:
ls = ListLinePlot[{{1, 2}, {2, -3}, {3, 1}, {4, -2}}, Axes -> False];
g = ParametricPlot[{1 + 3 t, 2 - 15 t + 27 t^2 - 16 t^3}, {t, 0, 1}];
Show[ls, g]
绘制图形如下:
显然控制点集的第一个点和最后一个点就是贝塞尔曲线的端点。

另外一个性质是,贝塞尔曲线在端点的切线,是平行于过端点和相邻控制点的连线,即有: '10'1P (0)()
P (1)()n n n P P n P P -=-=- (1.10)
对于前面的一个例子,可以检验一下,在t=0时,曲线的斜率是:
002
''-15+54t 48||53t t t t y t k x ==-===- (1.11)
而:P 0=(1,2),P 1=(2,-3),所以连线斜率为:
32521k --==-- (1.12)。

相关主题