三阶贝塞尔曲线拆分

更多精彩尽在这里,详情点击:http://miamigaynews.com/,多尔蒂

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

背景: 给一系列顶点,如果只是用直线将其中的各个点依次连接起来,最终形成一个折线图,这种很容易实现。但是现实…

上一篇我们说了 Path 的基本操作,这一篇让我们来说一下 Path 的进阶用法——贝塞尔曲线。 那什么是贝塞尔曲…

本文主要内容为贝塞尔曲线原理解析并用 SurfaceView 实现其展示动画 关于SurfaceView 的使用,…

前言 由于贝塞尔曲线控制简便且具有极强的描述能力,它常被用来生成复杂的平滑曲线;圆形是一种很常用的普通图形,在计算…

最近在做项目的时候,需要用到一个动画,非常简单的动画,简单到就是直接对一个View做平移… 然而虽然动画简单,…

发表评论

电子邮件地址不会被公开。 必填项已用*标注