前言
给我一个支点,我可以撬起地球
给我三个点,还你一个平滑曲线
人人都可以写贝塞尔曲线,这个曲线还是位汽车工程师发明的,很有趣。
贝塞尔曲线有什么特点?
- 可以平滑闭合
- 可以直接通过公式获得从a点到b点之间任何位置点,点与点之间不相互依赖,却之间相互的积分几乎相同(相邻点有几乎相同的斜率,当相邻点斜率变化很大时表示他们不平滑)
公式很简单
x=0~1;
p = (1-x)*[(1-x)*a+x*b] + x*[(1-x)*b+x*c];
简化后公式为:
p = (1-x)²*a + 2*x*(1-x)*b + x²*c;
下面图表的公式就是
p = (1-t)²*p0 + 2*t*(1-t)*p1 + t²*p2;
这个公式通过三个点来确定一条曲线,曲线的起始和结束点分别是a和c,b作为曲线的控制点,曲线并不经过b。
这个公式可以用于运动,也可用于直接绘制形状
一些经验
- 你可以将缓动的因子做的随机,就可以实现不同的粒子,动画运动轨迹效果
- 你也可以设计制作一根橡皮筋,当你拖拽的时候,你也能获取到精确到位置点,或者做出来一个圆圆的果冻,能够被拖拽或者和场景互动,发挥你的想象力。
参考
更高阶的贝塞尔曲线可以参考以下网站:
维基百科
https://en.wikipedia.org/wiki/Bézier_curve
百度词条
https://baike.baidu.com/item/贝塞尔曲线
扩展讲解
https://www.jianshu.com/p/55099e3a2899