贝塞尔曲线是计算机图形学和计算机辅助设计中最重要的曲线之一。
在机器人(特别是移动机器人)轨迹规划中,经常用到贝塞尔曲线。
贝塞尔曲线是一种特殊的多项式曲线,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.