贝塞尔曲线的来源

贝塞尔曲线最早是由贝塞尔在1962年提出来的,意图是获取汽车的外形。贝塞尔曲线看上去十分杂乱,其实想法十分简略,(如下图1所示)便是先用折线先制作出大致的轮廓,然后用曲线来迫临。

一文理解贝塞尔曲线

图1

这个方式是不是有点熟悉,刚看到的时候,我就想到了核算圆的面积时,咱们会使用多边形来迫临圆的曲线(如图2所示);贝塞尔曲线刚好相反,它是使用曲线来迫临多边形,刚好反着来了。

一文理解贝塞尔曲线

图2

结构贝塞尔曲线

思路虽然简略,但是怎样把这个曲线画出来,或者说怎样用一个函数来表明这条曲线就很困难了。不过这个不需要咱们关怀,有大佬已经处理了。咱们直接来看看贝塞尔曲线的定义式,如下图3:

一文理解贝塞尔曲线

图3

先别急着划走,这个公式不用记,因为它太杂乱而且核算量大,因此在工程开发中咱们不会用它。一般在工程中,咱们使用德卡斯特里奥算法(deCasteljau)来结构贝塞尔曲线。听起来更杂乱了,别急让咱们举个。下面以2次贝塞尔曲线为例。

一文理解贝塞尔曲线

图4

一文理解贝塞尔曲线

图5

看图4,德卡斯特里奥算法(deCasteljau) 的意义便是满意P0Q0P0P1=P1Q1P1P2=Q0BQ0Q1=t \frac{P_0Q_0}{P_0P_1} = \frac{P_1Q_1}{P_1P_2} = \frac{Q_0B}{Q_0Q_1} = t的情况下,跟着 t 从 0 到 1 逐渐变大,B点通过的点组成的曲线便是咱们需要的贝塞尔曲线了。图5是咱们常见的动图,之前看的时候一直很懵逼,现在了解了贝塞尔曲线是怎样画出来的,是不是清楚多了。

更高阶的贝塞尔曲线制作方式和上面的一样,仅仅多了几条边,制作的动图如下:

一文理解贝塞尔曲线

3次贝塞尔曲线

一文理解贝塞尔曲线

4次贝塞尔曲线

一文理解贝塞尔曲线

5次贝塞尔曲线

贝塞尔曲线的函数表明

看到这里,咱们已经对贝塞尔曲线有了一个大概的了解。但是仍是一个要害的问题,咱们怎样画出贝塞尔曲线呢?或者说有什么函数能够让咱们画出这个曲线吗?这个其实更简略,咱们高中就学过了。仍是以二次贝塞尔曲线为例,它的参数方程如下,其中P0、P1、P2代表控制点。

一文理解贝塞尔曲线

咱们假定三个控制点的坐标是P0(-1,0)、P1(0,1)、P2(1,0),把值带入上面的参数方程,就能够得到如下结果:

(xy)=(1−t)2(−10)+2t(1−t)(01)+t2(10)\left(\begin{array}{c}x\\ y\end{array}\right) = (1 – t)^{2} \left(\begin{array}{c}-1\\ 0\end{array}\right) + 2t(1 – t) \left(\begin{array}{c}0\\ 1\end{array}\right) + t^{2} \left(\begin{array}{c}1\\ 0\end{array}\right)
(xy)=(−(1−2t)2+t22t(1−t))\left(\begin{array}{c}x\\ y\end{array}\right) = \left(\begin{array}{c}-(1 – 2t)^{2} + t ^ 2\\ 2t(1 – t)\end{array}\right)
{x=2t−1y=−2t2+2t\begin{cases} x = 2t – 1 \\ y = -2t^2 + 2t\end{cases}

最终化解可得到咱们熟悉的 y = f(x) 函数:y=−12×2+12:y = -\frac{1}{2}x^2 + \frac{1}{2} 效果图如下图。能够看出二次贝塞尔曲线实际上便是咱们高中学的抛物线。仅有不同的是,咱们高中求的抛物线,会通过 P0、P1、P2三个点,而贝塞尔曲线只会通过 P0、P1两个端点。

一文理解贝塞尔曲线

相似的:

一次贝塞尔曲线便是一次函数:y=a0x+a1:y = a_0x + a_1

三次贝塞尔曲线便是三次函数:y=a0x3+a1x2+a2x+a3y = a_0x^3 + a_1x^2 + a_2x + a_3

四次贝塞尔曲线便是四次函数:y=a0x4+a1x3+a2x2+a3x+a4y = a_0x^4 + a_1x^3 + a_2x^2 + a_3x + a_4

n次贝塞尔曲线便是n次函数:y=a0xn+a1xn−1+…+an y = a_0x^n + a_1x^{n-1} + … + a_{n}

总结

贝塞尔曲线实际上并不杂乱,咱们能够简略的把n次贝塞尔曲线当作对应的n次函数的曲线。因为贝塞尔曲线的这个特点,也造成了贝塞尔曲线的最大缺陷————不能局部修改,即改动其中一个参数时会改动整条曲线。后面为了处理贝塞尔曲线的这个问题,提出了B样条曲线,下篇文章咱们就介绍B样条曲线。

最终这篇文章为了方便读者的了解,省略了许多贝塞尔曲线特性的介绍,如果对贝塞尔曲线感兴趣,能够在B站上看看它的完好课程

参阅

  • # 核算机图形学bezier曲线曲面B样条曲线曲面
  • 贝塞尔曲线维基百科