function [z]=BILINEARINTERPOL(xdata,ydata,zdata,x,y)
%BILINTERPOL function perform a bilinear interpolation along the plane xy
%for the underlying function z at data point with coordinates x and y.
%   Data values on xdata, ydata and zdata must surround xy point
%
%                   (x4,y4)          (x3,y3)
%                (0,1) * -------------- * (1,1)
%                      |                |
%                      |                |
%                      |        *       |
%                      |      (x,y)     |
%                      |                |
%                (0,0) * -------------- * (1,0)
%                   (x1,y1)          (x2,y2)
%
%  
% xdata=[x1,x2,x3,x4]
% ydata=[y1,y2,y3,y4]
% zdata=[z1,z2,z3,z4]
% x1=x4
% x2=x3
% y1=y2
% y3=y4

r=(x-xdata(1))/(xdata(2)-xdata(1));
s=(y-ydata(3))/(ydata(2)-ydata(3));
z=(1-r)*(1-s)*zdata(4)+r*(1-s)*zdata(3)+(1-r)*s*zdata(1)+r*s*zdata(2);

end