分享

怎样计算贝赛尔曲线的参数?

 遇见数学 2021-06-21

贝塞尔曲线是计算机绘制曲线常用的对象,这里介绍一下绘制贝塞尔曲线时怎样设置参数。这是许多资料里都没有说清楚的问题。限于本人能力,文章里只谈了二次和三次贝塞尔曲线。

一、贝塞尔曲线方程到底是什么?

首先要说明的是,贝塞尔曲线方程其实是多项式参数方程,这里特别要提出的是参数方程这四个字!也就是说,是两个关于 的方程,一个是 的关于 的多项式,另外一个是 的关于 的多项式。很多资料只给出了其中的一个方程,往往让人看不懂,也许那些资料认为另外一个方程可以类比着直接写出(实际也是),但偏偏这些资料没有对这一点进行说明。下面以二次贝塞尔曲线为例,方程如下():

容易知道:当 时, ,当 时,

也就是说, 分别为曲线端点坐标。而 是两个端点切线的交点坐标,只要给出曲线方程,是很好求得的。特别是,对于过 这三点、且对称轴为 轴的抛物线,有:

注意,中间的点纵坐标是边上点纵坐标的相反数(或者说抛物线顶点的纵坐标在对称端点和相应切线的中间)。

二、一般的三次贝塞尔曲线方程的计算方法

下面重点说下三次贝塞尔曲线,方程如下():

同样可以知道:当 时,,当 时,

也就是说, 同样分别为曲线端点坐标,但这里的 并不是曲线两个端点切线的交点,而只是两个端点切线上的点。

这两个切线上的点,一共四个值(横坐标两个、纵坐标两个),求解方法是:

  1. 计算两个端点位置切线的斜率,可以列出两个方程;

  2. 将前述形式的参数方程与要作的曲线的实际参数方程对照,又可以得到两个方程。

三、三次贝塞尔曲线方程计算实例

这里要画的曲线是 ,范围是 。易知:

至于另外两个点的坐标,显然, ,关键是求 。因为原方程是 ,所以,参数方程如下(已将前述各值代入到三次贝塞尔方程):

的参数方程立即可以得到 ,再计算出 处的切线斜率为 ,即 ,可以求得 。再将它代入 的参数方程,整理得到:

计算得到 ,即四个点依次为:

如果要做 之间的一段,那么参数方程就得改为:

这是因为必须满足 。这样,四个点的坐标分别为:

四、三次贝塞尔曲线方程与二次贝塞尔曲线方程的关系

有些简单曲线可以用二次贝塞尔方程描述(前面的抛物线其实就可以),那么一定可以用三次方程描述,但反过来不一定能成立。而计算二次贝塞尔方程时,除了端点坐标以外,就只需要再提供一个点(即过两个端点切线的交点坐标),比较好计算。这就带来一个问题:如果已经计算出了曲线的二次贝塞尔方程形式,怎样给出对应的三次贝塞尔方程形式?

下面对 坐标进行计算(结论可以直接推到 坐标上去)。首先,重写二次和三次贝塞尔方程如下:

~~~二次贝塞尔曲线

~~~三次贝塞尔曲线

和前面所给的方程相比,这里只在系数的形式上作一点变化,以免在计算时发生混淆。其中撇号表示区别于前面一个式子,不是表示求导。

上面 的各个系数中, 分别为两端点坐标,不必计算, 已经求出,只需再求 即可。将上述两个方程分别展开,找到变量 的对应项,令其分别相等,得到以下四个式子:

除去最后一个等式,还有三个等式,而要求解的只有两个,任意取其中两个等式,可以得出:

之间的三等分点中靠近 的那一个, 是线段 之间的三等分点中靠近 的那一个。

可以用前面的抛物线例子来验证结论,容易知道,对于 ,如果用二次贝塞尔曲线方程,则 (此即为两个端点处切线的交点),和我们前面计算出的 完全符合这里所给的关系,纵坐标亦然。对于 ()仍然符合。

最后一点要说明的是,不是所有曲线都能用贝塞尔曲线精确地表示,比如圆(和椭圆)、双曲线都不可能用贝塞尔曲线精确地表示(想想为什么)。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多