如图,一阶(两点)贝塞尔、二阶(三点)贝塞尔、三阶(四点)贝塞尔、四阶(五点)贝塞尔
Bezier原理其实不复杂~
一阶贝塞尔(直线)
一阶贝塞尔由两个点确定:
P
0
P0
P0和
P
1
P1
P1,
P
0
P0
P0是起点,
P
1
P1
P1是终点
当时间
t
t
t在0~1区间变化时,根据该曲线公式,可以得到多个点坐标,这些点坐标,实际就形成一条直线
P
(
t
)
=
P
0
+
(
P
1
−
P
0
)
∗
t
P(t) = P0 + (P1 - P0) * t
P(t)=P0+(P1−P0)∗t
如下图:
二阶贝塞尔(曲线)
二阶贝塞尔由3个点确定:
P
0
P0
P0、
P
1
P1
P1、
P
2
P2
P2,
P
0
P0
P0是起点,
P
2
P2
P2是终点,
P
1
P1
P1是控制点
他实际上可以分解为两个一阶贝塞尔,
P
0
P0
P0-
P
1
P1
P1和
P
1
P1
P1-
P
2
P2
P2
根据一阶贝塞尔曲线,我们知道可以根据两个点算出一个新的中间点坐标,因此,
P
0
P0
P0-
P
1
P1
P1=>
P
m
Pm
Pm,
P
1
P1
P1-
P
2
P2
P2=>
P
n
Pn
Pn
这样,三个点
P
0
P0
P0
P
1
P1
P1
P
2
P2
P2,就转换成了两个点
P
m
Pm
Pm
P
n
Pn
Pn
接着,再套用一阶贝塞尔,将
P
m
Pm
Pm-
P
n
Pn
Pn=>
P
(
t
)
P(t)
P(t),生成的点,就构成了一个曲线
P
m
=
P
0
+
(
P
1
−
P
0
)
∗
t
Pm = P0 + (P1 - P0) * t
Pm=P0+(P1−P0)∗t
P
n
=
P
1
+
(
P
2
−
P
1
)
∗
t
Pn = P1 + (P2 - P1) * t
Pn=P1+(P2−P1)∗t
P
(
t
)
=
P
m
+
(
P
n
−
P
m
)
∗
t
P(t) = Pm + (Pn - Pm) * t
P(t)=Pm+(Pn−Pm)∗t
生成曲线如下:
多阶贝塞尔
更多阶贝塞尔,其实就是分解成多个二阶贝塞尔,生成新的点,再构成二阶贝塞尔,多次重复叠加计算,就可以生成曲线了
参考
- 贝塞尔曲线原理示意图:
https://www.jasondavies.com/animated-bezier/