贝塞尔曲线是计算机图形学和计算机辅助设计中最重要的曲线之一。
在机器人(特别是移动机器人)轨迹规划中,经常用到贝塞尔曲线。
贝塞尔曲线是一种特殊的多项式曲线,n 阶贝塞尔曲线由 n+1 个控制点来确定。
1、低阶贝塞尔曲线
线性贝塞尔曲线
控制点为b0(p0,q0)和b1(p1,q1),其多项式表示为:
用向量形式表示为:
二次贝塞尔曲线
控制点为b0(p0,q0)、b1(p1,q1)和b2(p2,q2),其多项式表示为:
三个控制点组成的图形角控制三角形。
三次贝塞尔曲线
四个控制点为:b0,b1,b2,b3,三次贝塞尔曲线定义为:
三次贝塞尔曲线所能表示的形状远远多于二次贝塞尔曲线,它可以表示环、尖角和拐点。
表示初始点的切向量和最初两个控制点的连线平行,终点的切向量和最后两个控制点的连线平行。
2、一般贝塞尔曲线
给定 n+1 个控制点 b0,b1,⋯,bn, 则 n 阶贝塞尔曲线定义为:
其中:
称作n 阶贝塞尔曲多项式或控制函数。
二项式展开定理:
其每一项的系数和贝塞尔曲线的系数形同。
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的凸集(Convex)可以用
在二维欧几里得空间中,凸包可想象为一条刚好包着所有点的橡皮圈。
性质1:
n阶贝塞尔曲线
端点插值性质:
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],那么:
6、贝塞尔曲线分支
对于贝塞尔曲线 B(t)=∑ni=0biBi,n(t), 其在时刻 t 被分成两部分:
其中,bji 仍然由 de Casteljau Algorithm 计算出。
参考:
[1]:https://en.wikipedia.org/wiki/Convex_hull
[2]:Duncan M. Applied Geometry for Computer Graphics and CAD. Springer, 2005.