C ++使用余弦插值数组

时间:2014-12-12 16:08:40

标签: c++ arrays interpolation cosine

我从[本网站] http://paulbourke.net/miscellaneous/interpolation/)获得此功能:

double CosineInterpolate(
   double y1,double y2,
   double mu)
{
   double mu2;

   mu2 = (1-cos(mu*PI))/2;
   return(y1*(1-mu2)+y2*mu2);
}

如何使用它来插入数组?以下是我如何调用该功能。

Interpolate(point_a, point_b, number_of_positions_between_the_points, position)

e.g。

for (int i = 0; i < ArrayOfPoints.size()-1; ++i) {
    double point_a = ArrayOfPoints[i];
    double point_b = ArrayOfPoints[i+1];
    for (int j = 0; j < 2048; ++j){
        array[j] = Interpolate(point_a, point_b, 2048, j)
    }
}

1 个答案:

答案 0 :(得分:2)

你有两个点之间的位置数,然后你有当前位置。将mu视为第一个点与第二个点之间的线性距离的百分比,该距离由当前位置和位置总数确定。那就是:

mu = (double)current_position / number_of_positions_between_the_points;

这将为您提供01之间的固定增量值,取决于您希望在各点之间保持多少个位置。

提示:在你的循环中,j是当前位置。

您必须处理的另一件事是您正在调用名为Interpolate(point_a, point_b, 2048, j)的函数,但您还没有显示该函数的实现。相反,您拥有CosineInterpolate功能。大概你想通过从CosineInterpolate调用Interpolate来抽象插值方法。答案的第一部分告诉你如何做到这一点。我希望这有帮助!