8

だから私はトライリニア補間関数を書こうとしていますが、それを思い付くのに苦労しています。

まず、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?
}
4

3 に答える 3

-1

トリリニア補間を理解するための非常に優れた情報源は、https: //en.wikipedia.org/wiki/Trilinear_interpolationにあります。

それは次のことを言及しています:

実際には、トリリニア補間は、線形補間と組み合わせた 2 つのバイリニア補間と同じです。

C = linear(bilinear(C_(000),C_(010),C_(100),C_(110)),
           bilinear(C_(001),C_(011),C_(101),C_(111)))
于 2017-05-17T08:12:38.720 に答える