给定多个点,如何将这些点连接起来形成一条光滑的曲线呢?我们已经了解关于贝塞尔曲线的公式以及几何画法,但是要如何来解决我们用曲线来连接各个顶点的问题呢?
对于两个点之间我们可以使用三阶贝塞尔曲线来连接,这样通过多段贝塞尔曲线相连,就可以得到我们想要的曲线。而三阶贝塞尔曲线需要两个控制点来确定,很显然贝塞尔曲线不一定通过控制点,但是肯定通过端点。所以给定的顶点只能做端点,那问题就变成了如何计算所需要的控制点?
首先要保证曲线在顶点处连续,就要求左边曲线在顶点处的切线和右边曲线在顶点处的切线一致。即函数的左导数等于右导数。
我们知道,保持连续的必要条件是顶点和它前后的控制点在同一条直线上,而该直线就是曲线在该顶点的切线。
这里有一种思路:穿过已知点画平滑曲线;英文原文地址,这里也有一篇文章说的是用lua语言来实现的:开放的多点贝塞尔曲线实现
总结一下如下图所示:
如上图所示:如果需要绘制一条通过点A、B、C的曲线,我们需要计算各条用于连接的贝塞尔曲线的控制点。
以顶点B为例:
1、取AB和BC的中点E、F,并连接E、F
2、在EF上取点D,使得FD/DE = BC/AB
3、将直线EF按照矢量DB平移到通过B点,并且使得平移后的D和B点重合<