我们已经知道, 线段上的线性插值:
v = a*(1.0-w) + b*w;
即: 点的权重等于对边线的长度.
对矩形的两个边的方向分别应用线段的线性插值, 就得到矩形内点的线性插值.
v = a*(1.0-w)*(1.0-h) + b*w*(1.0-h) + c*(1.0-w)*h + d*w*h
= a*s4 + b*s3 + c*s2 + d*s1
即: 点的权重等于对面小矩形的面积.
javascript代码:
var a = 1, b=2, c=3, d=4;
var w = 0.25, h=0.75;
function rectangle_interpolation(a,b,c,d,w,h){
var s1 = w*h, s2=(1.0-w)*h, s3=w*(1.0-h), s4=(1.0-w)*(1.0-h);
return a*s4 + b*s3 + c*s2 + d*s1;
}
var v = rectangle_interpolation(a,b,c,d,w,h);
console.log("val=", v);