それがInterpolationBilinear
クラスが行うべきことです。ドキュメントを参照してください。それが行う唯一のことは、長方形に配置された 4 つのポイント間の双一次補間を実装することです。公式はこちらで説明されていますが、自分で簡単に実装することもできます。
質問は次のとおりです。あなたの例ではfloat x
とfloat y
は何ですか? それらはInterpolationBilinear.interpolate
、サンプルの四角形の四隅の間の分数の位置を表すことになっているからです。
それとも、配列内の要素番号を表現しfloat x
たいですか? float y
たとえば、(4.3,7.1) は要素 (4,7)、(4,8)、(5,7)、および (5,8) 間の補間を意味しますか? interpolate
次に、はい、 x の 0.3 と y の 0.1 の小数位置とともに、これらの 4 つの値 (またはその単純な式の独自の実装) をプラグインする必要があります。
編集配列内の分数位置を表す必要があることx
を明確にし、それを呼び出して、10 x 10 であると仮定します。つまり、インデックスは両方の次元で 0 から 9 になります。y
raw[][]
補間するには、どの正方形が該当するかを見つけて、4 つの角の間を補間する(x,y)
必要があります。(x,y)
x 方向では、インデックスは のすぐ上とすぐ下の整数になりますx*9
。つまりMath.floor(x*9)
、 とMath.floor(x*9) + 1
-- y でも同じ考えですがy*9
、これで四隅ができました。それらを式に当てはめます。分数の位置は と のようにxfrac = x*9 - Math.floor(x*9)
なりyfrac = y*9 - Math.floor(y*9)
ます。それらも式に当てはめます。
これは、ターゲット配列のポイントごとに繰り返す必要があります。x
上記の段落のは、ターゲット配列のインデックスi/19
とy
等しいことj/19
に注意してi
ください。j