所以我正在尝试编写一个三线性插值函数,但在想出它时遇到了一些麻烦。
所以首先我们有一个一维插值:
float interpolate1D(float v1, float v2, float x){
return v1*(1-x) + v2*x;
}
然后是 2D 插值:
float interpolate2D(float v1, float v2, float v3, float v4, float x, float y){
float s = interpolate1D(v1, v2, x);
float t = interpolate1D(v3, v4, x);
return interpolate1D(s, t, y);
}
但是一旦进入 3D,事情就会变得棘手。我不太清楚如何使用 2D 插值函数实现 3D 插值器。我不知道为什么我会有这种心理障碍,因为它应该只是一个简单的扩展,但我想所有不同的变量都在让我失望。所以我在下面开始了一个功能,但它不完整,我需要帮助来完成它。
float interpolate3D(v1, v2, v3, v4, v5, v6, v7, v8, float x, float y, float z){
float s = interpolate2D(v1, v2, v3, v4, x, y);
float t = interpolate2D(v5, v6, v7, v7, x, z);
//What do I do next?
}