贝塞尔曲线均匀插值算法
二次贝塞尔曲线公式为:
其中,P0、P1、P2分别为起始点、控制点、终点。
其对应的坐标公式为:
整理有:
由公式很容易可以得出这样一个结论:随着变量t线性变化,坐标x、y是非线性变化的。这将导致一个问题,我们在贝塞尔曲线上取点时,若想取得的点是“均匀”的,即点与点之间的距离要相等(点足够密时,可以近似为点与点之间的路径相等),即需要求出贝塞尔曲线段长度L关于t的关系函数,然后根据L来反求t,这样才能采样得到均匀的贝塞尔采样点。
下面开始求贝塞尔曲线长L关于t的关系函数。
令
则
同理,
对(6)(7)求导,有:
根据平面距离公式,此时速度大小:
令
则
对速度函数求积分,即得到贝塞尔曲线积分:
公式(12)即是二次贝塞尔曲线的长度函数。
再回到上述问题,若想要在贝塞尔曲线上均匀取点,即保持L(t)为一个固定值D,令L(t)-D=0,求出t,再将t代入B(t)中(即公式(1)),即可求得间距D时的坐标(x,y)。
根据L(t)-D=0求t的方法----牛顿迭代法:
设r是f(x)的根,选取x0作为r的初始近似值,则有:
只要选取的x0在r的邻近区域内,那么牛顿法必定收敛。 并且,如果不为0, 那么牛顿法将具有平方收敛的性能。因此,只要经过一定的迭代次数,所求xn在一定精度内满足我们需求。