使用插值方法在曲线上生成中间点。
例如,给定 CubicInterpolate 函数:
double CubicInterpolate(
double y0,double y1,
double y2,double y3,
double mu)
{
double a0,a1,a2,a3,mu2;
mu2 = mu*mu;
a0 = y3 - y2 - y0 + y1;
a1 = y0 - y1 - a0;
a2 = y2 - y0;
a3 = y1;
return(a0*mu*mu2+a1*mu2+a2*mu+a3);
}
要找到三次样条之间的中间点point[1]
,您可以使用:point[2]
newPoint.X = CubicInterpolate(point[0].X, point[1].X, point[2].X, point[3].X, 0.5);
newPoint.Y = CubicInterpolate(point[0].Y, point[1].Y, point[2].Y, point[3].Y, 0.5);
point[0]
确实会影响和之间的point[3]
曲线部分。在曲线的任一端,只需再次使用端点即可。point[1]
point[2]
为了确保点之间的距离大致相等,您可以计算输入点之间的距离以确定要生成多少中间点(和mu
值)。因此,对于相距较远的点,您将在和之间使用更多mu
值。相反,对于非常靠近的点,您可能根本不需要添加中间点。0
1