Android 贝塞尔曲线原理及其绘制实现
Android动画,特别是涉及运动轨迹的,很多时候都会使用贝塞尔曲线,下面将系统的介绍下贝塞尔曲线的相关知识。
什么是贝塞尔曲线
贝塞尔曲线于1962年,由法国工程师皮埃尔·贝兹(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由保尔·德·卡斯特里奥于1959年运用德卡斯特里奥算法开发,以稳定数值的方法求出贝塞尔曲线。
下文我们将简要介绍德卡斯特里奥算法,并利用其实现绘制贝塞尔曲线。
贝塞尔曲线演示
一阶曲线,即线性曲线:
二阶曲线:
三阶曲线:
四阶曲线:
五阶曲线:
这些运动轨迹使用德卡斯特里奥算法计算出贝塞尔曲线。
一些值得关注的特性:
- 开始于P0并结束于Pn的曲线,即所谓的端点插值法属性。
- 曲线是直线的充分必要条件是所有的控制点都位在曲线上。同样的,贝塞尔曲线是直线的充分必要条件是控制点共线。
- 曲线的起始点(结束点)相切于贝塞尔多边形(下称折线)的第一段(最后一段)。
- 一条曲线可在任意点切割成两条或任意多条子曲线,每一条子曲线仍是贝塞尔曲线。
德卡斯特里奥算法原理
在向量AB上选择一个点C,使得C分向量AB为u:1-u(即|AC|:|AB|=u)。给定点A、B的坐标以及u(u∈[0,1])的值,点C的坐标则