这就是InterpolationBilinear
班级应该做的事情。请参阅文档。它唯一做的就是在矩形排列的四个点之间实现双线性插值。该公式在此处进行了解释,您也可以很容易地自己实现它。
问题是:在你的例子中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 一起插入(或您自己实现的那个简单公式)。
编辑您现在已经澄清x
并且应该表示数组中y
的小数位置,我们称之为它,并假设它是 10 x 10 即索引在两个维度上从 0 到 9。raw[][]
要进行插值,(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)
and yfrac = y*9 - Math.floor(y*9)
。也将它们插入公式中。
这必须对目标数组中的每个点重复。请注意,x
上面段落中的 将等于i/19
并且y
等于j/19
wherei
和j
是目标数组的索引。