美文网首页
三阶贝塞尔曲线拆分

三阶贝塞尔曲线拆分

作者: 小小棒棒糖 | 来源:发表于2017-10-13 10:23 被阅读0次

源地址为:http://m.blog.csdn.net/nibiewuxuanze/article/details/48229393

三阶贝塞尔曲线被广泛用于各种需要平滑曲线的设计领域,一般通过多段三阶贝塞尔曲线顺次连接,构成比较复杂的曲线。

比如下图中,A、B、C和D控制红色曲线,D、E、F和G控制绿色曲线,G、H、I和A控制蓝色曲线。

img

对于上面红色曲线,我们把A和D称为端点,B和C称为柄点,可以发现端点总是被相邻曲线共用。

每一段三阶贝塞尔曲线均由两个端点和两个柄点,一共四个控制点进行控制,对于其中每个控制点的改变,均会影响这段曲线所有部分。

img

出于曲线微调的目的,在柄点B的移动过程中,只改变端点A到点E的那一段曲线(E点的位置固定起来),而对于点E到端点D的部分则维持不变。

这样的情况下,就需要分拆这段贝塞尔曲线为两段,端点A到点E为一段,点E到端点D为一段,然后再单独修改端点A到点E的那段曲线。

展示一下曲线分开后,单独控制的效果:

img

我们知道A、B、C和D四个控制点,描述了上面的三阶贝塞尔曲线,那么就有以下两个问题:

第一,分拆后的曲线AE和曲线ED,能否用三阶贝塞尔曲线描述?

第二,如果能够的话,那么曲线AE和曲线ED的控制点在哪里?

对于第一个问题,答案是肯定的。

可以证明曲线AE和曲线ED上的三阶贝塞尔曲线的参数方程,经过对参数变量的变换,可以转换为完整三阶贝塞尔曲线的参数方程(参数变量的取值范围调整到对应的定义域)。其中,曲线AE和曲线ED的三阶贝塞尔曲线的参数方程的参数变量,与完整三阶贝塞尔曲线的参数方程的参数变量,有着确定的函数关系。

那么,下面就针对第二个问题,来寻求解答。

由三阶贝塞尔曲线的参数方程定义

可以将点E定义为t等于特定值e (0<e<1)时的点P(e),也即:

img

针对三阶贝塞尔曲线的定义,可以作出以下辅助点和辅助线;

img

根据贝塞尔曲线的特性,可以知道线段AB是贝塞尔曲线在A点的切线段,线段IJ是贝塞尔曲线在E点的切线,线段CD是贝塞尔曲线在D点的切线。

其中F、G、H、I、J是与贝塞尔曲线相关的辅助点,根据三阶贝塞尔曲线的规则,坐标可以定义如下:

img img

另外,E也可以通过I和J来定义,如果进行推算,那么结果和P(e)也是一致的:

img

经过观察,感觉A、F、I和E很像是曲线AE的贝塞尔曲线控制点的样子,下面就针对这个猜想进行验证:

假设A、F、I和E就是曲线AE的贝塞尔曲线的控制点,那么以u为参数变量的三阶贝塞尔曲线方程可以表达如下:

img

代入F、I和E的坐标公式,则Q(u)可以转换为如下形式:

img

经过化简和整理可得:

img

以自变量t代替ue,则可以定义如下函数:

img

而曲线AE就是三阶贝塞尔曲线参数方程P(t)定义在t=[0, e]的部分,也即:

img

R(t)和PAE(t)的定义域和函数方程完全相同,所以可以得知Q(u)就是曲线AE的参数方程,也即A、F、I和E是曲线AE的三阶贝塞尔曲线的控制点,从而可以验证前面的猜想。

对于曲线ED部分,也可以采用相同方式进行证明,这里不再赘述。

从而,控制点ABCD描述的三阶贝塞尔曲线,可以被分解为控制点AFIE描述的贝塞尔曲线和控制点EJHD描述的贝塞尔曲线。

也即,对于三阶贝塞尔参数曲线方程P(t)而言,对于任意0<e<1,均可以将该曲线从P(e)处断开成两个三阶贝塞尔曲线。

img

感谢Grapher和GeoGebra软件,使得方便排版文章中使用的公式和曲线。

相关文章

  • Android贝塞尔曲线相关资料

    资料整理: Android-贝塞尔曲线 贝塞尔曲线扫盲 练习贝塞尔曲线 贝塞尔曲线绘制在线演示(带坐标) 生成三阶...

  • 贝塞尔曲线入门

    本章目录 Part One:一阶贝塞尔曲线 Part Two:二阶贝塞尔曲线 Part Three:三阶贝塞尔曲线...

  • Android 实现波浪动画的两种方式

    一、国际惯例先上效果 二、实现思路 1、贝塞尔曲线实现 什么是贝塞尔曲线,贝塞尔曲线的原理,二阶、三阶、四阶、五阶...

  • Android-贝塞尔曲线实现水波纹动画

    Android 系统api提供了quadTo和rQuadTo实现二阶贝塞尔曲线,三阶贝塞尔曲线在这不做阐述,只不过...

  • 三阶贝塞尔曲线拆分

    源地址为:http://m.blog.csdn.net/nibiewuxuanze/article/details...

  • 贝塞尔曲线

    二阶贝塞尔曲线为了确定曲线上的一个点,需要进行两轮取点的操作,因此我们称得到的贝塞尔曲线为二次曲线. 使用三阶贝塞...

  • ios知识点(7)贝塞尔曲线

    贝塞尔曲线扫盲iOS UIBezierPath贝塞尔曲线常用方法iOS UIBezierPath(贝塞尔曲线)iO...

  • 三阶贝塞尔曲线拟合1/4圆

    根据贝塞尔曲线的知识,我们知道三阶贝塞尔曲线的参数方程如下,其中A、B、C、D为四个控制点坐标,P(t)表示曲线上...

  • 贝塞尔曲线实现的Viewpager指示器

    贝塞尔曲线实现的Viewpager指示器 闲来无事利用path 三阶曲线写的一个小东西,关于贝塞尔曲线相关的博客网...

  • 二次贝塞尔曲线绘制原理讲解

    二次贝塞尔曲线 贝塞尔曲线简介 贝塞尔曲线(Bézier curve),又称贝兹[http://baike.bai...

网友评论

      本文标题:三阶贝塞尔曲线拆分

      本文链接:https://www.haomeiwen.com/subject/owzayxtx.html