分享

三阶贝塞尔曲线一分为二的一般公式

 imelee 2016-01-01

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

比如下图中,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的控制点在哪里?


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

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

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


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

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



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

根据贝塞尔曲线的特性,可以知道线段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为参数变量的三阶贝塞尔曲线方程可以表达如下:


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


经过化简和整理可得:


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


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


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

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


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

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



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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多