だから私はトライリニア補間関数を書こうとしていますが、それを思い付くのに苦労しています。
まず、1D 補間を行います。
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?
}