概述
贝塞尔曲线的运用是十分广泛的,可以说贝塞尔曲线奠定了计算机绘图的基础(因为它可以将任何复杂的图形用精确的数学语言进行描述),在你不经意间就已经使用过它了。
贝塞尔曲线作用十分广泛,简单举几个的例子:
- QQ小红点拖拽效果
- 一些炫酷的下拉刷新控件
- 阅读软件的翻书效果
- 一些平滑的折线图的制作
- 很多炫酷的动画效果
了解贝塞尔曲线的原理
贝塞尔曲线是用一系列点来控制曲线状态的,这些点简单分为两类:
一阶曲线原理:
一阶曲线是没有控制点的,仅有两个数据点(A 和 B),最终效果一个线段。
上图表示的是一阶曲线生成过程中的某一个阶段,动态过程可以参照下图(本文中贝塞尔曲线相关的动态演示图片来自维基百科)。
一阶曲线其实就是前面讲解过的lineTo
公式:B(t)
就是运动点在t
时刻的坐标,p0
起点,p1
终点
二阶曲线原理:
二阶曲线由两个数据点(A 和 C),一个控制点(B)来描述曲线状态,大致如下:
上图中红色曲线部分就是传说中的二阶贝塞尔曲线,动图生成过程:
二阶对应的方法就是quadTo()
公式:起点P0
和終点P2
,控制点就是P1
,运动点在P0,P1,P2
三个点的约束下,运动形成的轨迹就是红色的曲线
三阶曲线原理:
三阶曲线由两个数据点(A 和 D),两个控制点(B 和 C)来描述曲线状态,如下:
动态描述:
三阶曲线对应的方法是cubicTo
公式:
实战:做一个水位上升的动画
1 | class BezierView :View { |