procedure GetCatrom(var catrom: array2flt; i_f: single; j_f: single);
var
x1, x2, x3, y1, y2, y3, wx, wy, dx, dy: single;
i, j: integer;
begin
dx := j_f - Trunc(j_f);
dy := i_f - Trunc(i_f);
for i := 0 to 3 do
begin
y1 := Abs(i - (1.0 + dy));
y2 := y1 * y1;
y3 := y1 * y2;
if (y1 < 1.0) then
begin
wy := 1.5 * y3 - 2.5 * y2 + 1.0
end
else if ((y1 >= 1.0) and (y1 <= 2.0)) then
begin
wy := -0.5 * y3 + 2.5 * y2 - 4.0 * y1 + 2.0
end
else
begin
wy := 0.0
end;
for j := 0 to 3 do
begin
x1 := Abs(j - (1.0 + dx));
x2 := x1 * x1;
x3 := x1 * x2;
if (x1 < 1.0) then
begin
wx := 1.5 * x3 - 2.5 * x2 + 1.0
end
else if ((x1 >= 1.0) and (x1 <= 2.0)) then
begin
wx := -0.5 * x3 + 2.5 * x2 - 4.0 * x1 + 2.0
end
else
begin
wx := 0.0
end;
catrom[i][j] := wx * wy;
end;
end;
end;