原理
贝塞尔曲线由起点、终点(也称锚点)和若干个控制点决定
以二阶为例
已知不共线3点A、B、C,依次连接线段AB、BC,分别取AB、BC中D、E,使得AD:AB = BE:BC,连接DE,取DE上F,使得DF:DE = AD:AB = BE:BC。利用极限知识,让D点从A移动到B,找到所有的F点,这些点形成的曲线便是贝塞尔曲线。
一条曲线可在任意点切割成两条或任意多条子曲线,每一条子曲线仍是贝塞尔曲线
n阶贝塞尔曲线可以看成二阶贝塞尔曲线组成
PS中的钢笔通过锚点来绘制曲线
公式
引入参数t,t满足区间[0, 1],t的取值代表比例,DF:DE = AD:AB = BE:BC = t。
P0Bt:P0P1=t
一阶贝塞尔曲线
根据以上公式可得
二阶贝塞尔曲线
将公式(2)(3)代入公式(4)中,可得
三阶贝塞尔曲线
同理,根据以上的推导过程可得
由此可以推导
n阶贝塞尔曲线
(Bt−P0)/(P1−P0)=t
Bt=P0+(P1−P0)t=(1−t)P0+tP1(1)
Ba=P0+(P1−P0)t=(1−t)P0+tP1(2)
Bb=P1+(P2−P1)t=(1−t)P1+tP2(3)
Bt=Pa+(Pb−Pa)t=(1−t)Pa+tPb(4)
Pt=(1−t)Pa+tPb=(1−t)[(1−t)P0+tP1]+t[(1−t)P1+tP2]=(1−t)2P0+2(1−t)tP1+t2P2(5)
Pa=P0+(P1−P0)t=(1−t)P0+tP1
Pb=P1+(P2−P1)t=(1−t)P1+tP2
Pc=P2+(P3−P2)t=(1−t)P2+tP3
Pd=Pa+(Pb−Pa)t=(1−t)Pa+tPb
Pe=Pb+(Pc−Pb)t=(1−t)Pb+tPc
Pt=Pd+(Pe−Pd)t=(1−t)Pd+tPe=(1−t)[(1−t)Pa+tPb]+t[(1−t)Pb+tPc]=(1−t)2Pa+2(1−t)tPb+t2Pc=(1−t)2[(1−t)P0+tP1]+2(1−t)t[(1−t)P1+tP2]+t2[(1−t)P2+tP3]=(1−t)3P0+(1−t)2tP1+2t(1−t)2P1+2t2(1−t)P2+t2(1−t)P2+t3P3=(1−t)3P0+3t(1−t)2tP1+2t2(1−t)P2+t3P3