贝塞尔简介#
贝塞尔曲线(Bezier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。曲线的一些特性:#
使用n个控制点{P1,P2,...,Pn}来控制曲线的形状
曲线经过起点P1和终点Pn,但不经过中间点P2 Pn−1
step1:在二维平面内选三个不同的点并依次用线段连接step2:在线段AB和BC上找到D、E两个点,使得DBAD=ECBEStep3: 连接DE,并在DE上找到F点,使其满足FEDF=DBAD=ECBE(抛物线的三切线定理)上述为一个二阶贝塞尔曲线。同样的,也有n阶贝塞尔曲线公式推导#
一次贝塞尔曲线(线性公式)#
定义:给定点,P0,P1,线性贝塞尔曲线只是一条两点之间的直线,这条线由下式给出,且其等同于线性插值:B(t)=P0+(P1−P0)t=(1−t)P0+tP1,t∈[0,1]
其中,公式中的 P0,P1,同步表示为横或纵坐标。假设P0坐标为(a,b),P1的坐标为(c,d),P2的坐标为(x,y),则有c−xx−a=1−tt⇒x=(1−t)a+tc
d−yy−b=1−tt⇒y=(1−t)b+td
B(t)=(1−t)P0+tP1,t∈[0,1]
二次贝塞尔曲线(二次方公式)#
定义:二次贝塞尔曲线的路径由给定点P0,P1,P2的函数B(t)给出:B(t)=(1−t)2P0+2t(1−t)P1+t2P2,t∈[0,1]
假设P0P1上的点为A,P1P2上的点为B,AB上的点为C(也即C为曲线上的点)。则根据一次贝塞尔曲线公式有:A=(1−t)P0+tP1
B=(1−t)P1+tP2
C=(1−t)A+tB
将上式中的A、B带入C中,即可得到二次贝塞尔曲线的公式:B(t)=(1−t)2P0+2t(1−t)P1+t2P2,t∈[0,1]
二次贝塞尔曲线(三次方公式)#
B(t)=(1−t)3P0+3t(1−t)2P1+3t2(1−t)P2+t3P3,t∈[0,1]
n次贝塞尔曲线(一般参数公式)#
定义:给定点P0,P1,...,Pn,则n次贝塞尔曲线由下式给出:B(t)=i=0∑n(in)Pi(1−t)n−iti=(0n)P0(1−t)nt0+(1n)P1(1−t)n−1t1+...+(n−1n)Pn−1(1−t)n−1tn−1+(nn)Pn(1−t)ntn,t∈[0,1]
P0n=(1−t)P0n−1+tP1n−1,t∈[0,1]