canvas教程

Android贝塞尔曲线原理分析

字号+ 作者:H5之家 来源:H5之家 2017-06-03 16:04 我要评论( )

本文主要内容为贝塞尔曲线原理解析并用 SurfaceView 实现其展示动画 概述 贝塞尔曲线(Bzier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学

> 软件编程 > 安卓开发 >

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 ,其贝塞尔曲线即:

    四阶贝塞尔曲线:

    四阶贝塞尔曲线

    五阶贝塞尔曲线:

    五阶贝塞尔曲线

    公式说明
  • 开始于P 0 并结束于P n 的曲线,即所谓的端点插值法属性。
  • 曲线是直线的充分必要条件是所有的控制点都位在曲线上。同样的,贝塞尔曲线是直线的充分必要条件是控制点共线。
  • 曲线的起始点(结束点)相切于贝塞尔多边形的第一节(最后一节)。
  • 一条曲线可在任意点切割成两条或任意多条子曲线,每一条子曲线仍是贝塞尔曲线。
  • 一些看似简单的曲线(如圆)无法以贝塞尔曲线精确的描述,或分段成贝塞尔曲线(虽然当每个内部控制点对单位圆上的外部控制点水平或垂直的的距离为时,分成四段的贝塞尔曲线,可以小于千分之一的最大半径误差近似于圆)。
  • 位于固定偏移量的曲线(来自给定的贝塞尔曲线),又称作偏移曲线(假平行于原来的曲线,如两条铁轨之间的偏移)无法以贝塞尔曲线精确的形成(某些琐屑实例除外)。无论如何,现存的启发法通常可为实际用途中给出近似值。
  • Android上实现贝赛尔曲线

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • android画图实例源码下载

      android画图实例源码下载

      2017-05-30 17:03

    • Android开发学习资料,Android开发学习线路

      Android开发学习资料,Android开发学习线路

      2017-05-30 17:02

    • Android学习教程之2D绘图基础及绘制太极图

      Android学习教程之2D绘图基础及绘制太极图

      2017-05-29 18:00

    • 图像与边框在地图叠加使用android

      图像与边框在地图叠加使用android

      2017-05-28 16:00

    网友点评
    2