1.贝塞尔曲线简介
1.1什么是贝塞尔曲线
贝塞尔曲线于 1962 年,由法国工程师皮埃尔·贝济埃(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。
贝塞尔曲线主要用于二维图形应用程序中的数学曲线,曲线由起始点,终止点(也称锚点)和控制点组成,通过调整控制点,通过一定方式绘制的贝塞尔曲线形状会发生变化。后面会具体介绍绘制的方法。
在计算机图形学中贝赛尔曲线的运用很广泛,例如Photoshop中的钢笔效果,Flash5的贝塞尔曲线工具,在软件GUI开发中一般也会提供对应的方法来实现贝赛尔曲线,我们熟知的CSS动画过渡时间函数也是通过贝塞尔曲线(三阶贝塞尔曲线)获取的。
2.贝塞尔曲线类型
贝塞尔曲线根据控制点的数量分为:
一阶贝塞尔曲线(2 个控制点),也叫线性贝塞尔曲线
二阶贝塞尔曲线(3 个控制点),也叫二次贝塞尔曲线
三阶贝塞尔曲线(4 个控制点),也叫三次贝塞尔曲线
n阶贝塞尔曲线(n+1 个控制点),也叫n次贝塞尔曲线
2.1线性贝塞尔曲线
2.2二次贝塞尔曲线
2.3三次贝塞尔曲线
2.4四次和五次贝塞尔曲线
3.贝塞尔曲线原理
3.1线性贝塞尔曲线原理
3.2二次贝塞尔曲线原理
3.3三次贝塞尔曲线原理
3.4贝塞尔曲线公式归纳
4.计算塞贝尔曲线控制点
计算3次Bezier曲线控制点
其中t∈[0,1],写成矩阵方式:C=B∗P
则可以得到
C矩阵中的P0,P1,P2,P3和多项式中的P0,P1,P2,P3含义不一样,C矩阵中的代表t分别为0 、1/3、2/3、1时三次贝塞尔曲线上的四个点,P矩阵求得该塞贝尔曲线所有的控制点。
C矩阵中P0,P1,P2,P3分别时二元组,我们可以表示为P0<x0,y0>,P1<x1,y1>,P2<x2,y2>,P3<x3,y3> 因此C矩阵我们可以拆成两个Cx和Cy向量矩阵
讲Cx和Cy分别带入
分别可以求出Px和Py两个矩阵,Px和Py的对应的每一项组成的xy就是控制点的坐标xy。
5.拓展
在opendrive的ParamPoly3类型的参考线集合体中,
这里的Px=[aU,bU,cU,dU],Py=[aV,bV,cV,dV]。控制点坐标可以表示P0<aU,aV>,P1<bU,bV>,P2<cU,cV>,P3<dU,dV>。