贝塞尔曲线是计算机图形学和计算机辅助设计中最重要的曲线之一。

在机器人(特别是移动机器人)轨迹规划中,经常用到贝塞尔曲线。

贝塞尔曲线是一种特殊的多项式曲线,n 阶贝塞尔曲线由 n+1 个控制点来确定。

1、低阶贝塞尔曲线

线性贝塞尔曲线

控制点为b0(p0,q0)和b1(p1,q1),其多项式表示为:



(x(t),y(t))=(1−t)(p0,q0)+t(p1,q1),fort∈[0,1]

用向量形式表示为:



B(t)=(1−t)b0+tb1

二次贝塞尔曲线

控制点为b0(p0,q0)、b1(p1,q1)和b2(p2,q2),其多项式表示为:



B(t)=(1−t)2(p0,q0)+2(1−t)t(p1,q1)+t2(p2,q2),fort∈[0,1]

三个控制点组成的图形角控制三角形。

三次贝塞尔曲线

四个控制点为:b0,b1,b2,b3,三次贝塞尔曲线定义为:



B(t)=(1−t)3b0+3(1−t)2tb1+3(1−t)tb2+t3b3,fort∈[0,1]

三次贝塞尔曲线所能表示的形状远远多于二次贝塞尔曲线,它可以表示环、尖角和拐点。



B′(0)=3(b1−b0), B′(1)=3(b3−b2)

表示初始点的切向量和最初两个控制点的连线平行,终点的切向量和最后两个控制点的连线平行。

2、一般贝塞尔曲线

给定 n+1 个控制点 b0,b1,⋯,bn, 则 n


B(t)=∑i=0nbiBi,n(t)

其中:



Bi,n(t)={n!(n−i)!i!(1−t)n−iti,0,if   0≤i≤notherwise

称作n

二项式展开定理:


(x+y)n=∑i=0nCinxn−iyi

其每一项的系数和贝塞尔曲线的系数形同。

3、贝塞尔曲多项式的性质:

  • 统一性

各项系数之和为1

  • 非负性

各项系数均大于0

  • 对称性

第i项系数和倒数第i项系数相同

  • 递归性

递归性指其系数满足下式:


Bi,n(t)=(1−t)Bi,n−1(t)+tBi−1,n−1(t),i=1,⋯,n,B−1,n−1(t)=Bn,n−1(t)=0


4、贝塞尔曲曲线的性质:

凸包(Convex Hulls):

在一个实数向量空间V中,对于给定的集合X,所有包含X的凸集(Convex)的交集S被称为X的凸包


S:=⋂X≤K≤VK,k∈凸集

X的凸集(Convex)可以用X内所有点 (x1,⋯,xn)的线性组合来构造。



S:=[∑j=1ntjxj|xj∈X,∑j=1ntj=1,tj∈[0,1]]

在二维欧几里得空间中,凸包可想象为一条刚好包着所有点的橡皮圈。

性质1:

n阶贝塞尔曲线 B(t) ,控制点为 b0,⋯,bn, 满足如下性质:

  • 端点插值性质:


B(0)=bo,B(1)=bn


  • 端点切线定理:


B′(0)=n(b1−b0),B′(1)=n(bn−bn−1)


  • 凸包性质


B(t)∈S{bo,⋯,bn},∀t∈[0,1]

即:贝塞尔曲线上的点在其控制点定义的凸包内


  • 仿射变换不变性


T(∑i=0nbiBi,n(t))=∑i=0nT(bi)Bi,n(t),T为仿射变换


  • 变差缩减性质

对平面贝塞尔曲线 B(t)

5、The de Casteljau Algorithm

贝塞尔曲线 n+1 个控制点 b0,b1,⋮,bn,t∈[0,1],那么:



{B(t)=bn0bji=bj−1i(1−t)+bj−1i+1tb0i=bii=0,⋯,n−j,j=1,⋯,n

6、贝塞尔曲线分支

对于贝塞尔曲线 B(t)=∑ni=0biBi,n(t), 其在时刻 t

Bleft:bo0,b10,⋯,bn−10,bn0和Bright:bn0,⋯,n1n−1,b0n,

其中,bji 仍然由 de Casteljau Algorithm 计算出。

参考:

[1]:https://en.wikipedia.org/wiki/Convex_hull
 [2]:Duncan M. Applied Geometry for Computer Graphics and CAD. Springer, 2005.