www.pudn.com > balloonSnake(matlab).rar > snakeinterp.m


function [xi,yi] = snakeinterp(x,y,dmax,dmin) 
%SNAKEINTERP  Interpolate the snake adaptively 
%   [xi,yi] = snakeinterp(x,y,dmax,dmin) 
% 
%   dmax: the maximum distance between two snake points 
%   dmin: the maximum distance between two snake points 
%   d(i,i+1)>dmax, then a new point is added between i and i+1 
%   d(i,i+1)dmax); 
 
z = snakeindex(IDX); 
 
p = 1:N+1; 
 
xi = interp1(p,[x;x(1)],z'); 
yi = interp1(p,[y;y(1)],z'); 
 
N = length(xi); 
d = abs(xi([2:N 1])- xi(:)) + abs(yi([2:N 1])- yi(:)); 
 
while (max(d)>dmax), 
 
    IDX = (d>dmax); 
    z = snakeindex(IDX); 
 
    p = 1:N+1; 
 
    xi = interp1(p,[xi;xi(1)],z'); 
    yi = interp1(p,[yi;yi(1)],z'); 
 
    N = length(xi); 
    d = abs(xi([2:N 1])- xi(:)) + abs(yi([2:N 1])- yi(:)); 
end