> 软件编程 > 安卓开发 >
Android贝塞尔曲线原理分析 2017-05-31 15:02 出处:清屏网 人气:
本文主要内容为贝塞尔曲线原理解析并用 SurfaceView 实现其展示动画
概述
贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。在Flash4中还没有完整的曲线工具,而在Flash5里面已经提供出贝塞尔曲线工具。
曲线作用
由于用计算机画图大部分时间是操作鼠标来掌握线条的路径,与手绘的感觉和效果有很大的差别。即使是一位精明的画师能轻松绘出各种图形,拿到鼠标想随心所欲的画图也不是一件容易的事。这一点是计算机万万不能代替手工的工作,所以到目前为止人们只能颇感无奈。使用贝塞尔工具画图很大程度上弥补了这一缺憾。贝塞尔曲线是计算机图形图像造型的基本工具,是图形造型运用得最多的基本线条之一。
贝塞尔曲线
——来自百度百科
贝塞尔曲线公式以下公式中:B(t)为t时间下 点的坐标;P 0 为起点,P n 为终点,P i 为控制点
一阶贝塞尔曲线公式(线性公式)给定点P 0 、P 1 ,线性贝兹曲线只是一条两点之间的直线。且其等同于线性插值。
一阶贝塞尔曲线
二阶贝塞尔曲线公式设P 0 、P 0 2 、P 2 是一条曲线上顺序三个不同的点。过P 0 和P 2 点的两切线交于P 1 点,在P 0 2 点的切线交P 0 P 1 和P 2 P 1 于P 0 1 和P 1 1 ,则如下比例成立:
当P 0 ,P 2 固定,引入参数 t,令上述比值为 t:(1-t),即有:
将一式二式代入三式可得:
二阶贝塞尔曲线P 0 2 可以定义为分别由前两个顶点(P 0 ,P 1 )和后两个顶点(P 1 ,P 2 )决定的一阶贝塞尔曲线的线性组合。
可得出二阶贝塞尔曲线的公式:
三阶贝塞尔曲线公式
按照二阶的推导原理,以此类推, 由四个控制点定义的三阶贝塞尔曲线P 0 3 可被定义为分别由(P 0 ,P 1 ,P 2 )和(P 1 ,P 2 ,P 3 )确定的两条二阶贝塞尔曲线的线性组合:P 0 3 = (1-t)P 0 2 + tP 1 2
可递归代入得出三阶贝塞尔曲线公式:
现代的成象系统,如PostScript、Asymptote和Metafont,运用了以贝塞尔样条组成的三阶贝塞尔曲线,用来描绘曲线轮廓。
四阶及以上的贝塞尔曲线公式由(n+1)个控制点 P i (i=0,1,...,n) 定义的n阶贝塞尔曲线 P 0 n 可被定义为分别由前、后 n 个控制点定义的两条 (n-1) 阶贝塞尔曲线 P 0 n-1 与 P 1 n-1 的线性组合:
由此得到贝塞尔曲线的递推计算公式(通用公式):
其一般参数公式为:
n 阶贝塞尔曲线可如下推断。给定点P 0 、P 1 、…、P n ,其贝塞尔曲线即:
四阶贝塞尔曲线:
四阶贝塞尔曲线
五阶贝塞尔曲线:
五阶贝塞尔曲线
公式说明