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