image thumbnail
from A Star implemented in Matlab by Emad Hasan
An implementation of A Star pathfinding in Matlab

[cand,c]=expand(c,k,b,d,Astar_coord,Astar_connect)
%
%       k-omega expansion - E Hasan
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [cand,c]=expand(c,k,b,d,Astar_coord,Astar_connect)

for n=1:k
    try
    [x y]=size(c{n});
    catch
        c{n-1}=[];
        break
    end
    for xc=1:y;
        c{n+1,xc}=find(Astar_connect(c{n}(1,xc),:),b);
        if isempty(c{n+1,xc})
            c{n+1,xc}=[];
            break
        end

        c{n+1,xc}(2,:)=c{n}(1,xc);
        c{n+1,xc}(3,:)=c{n}(3,xc)+round(sqrt((Astar_coord(1,c{n+1,xc}(2,:))-...
            Astar_coord(1,c{n+1,xc}(1,:))).^2+abs(Astar_coord(2,c{n+1,xc}(2,:))...
            -Astar_coord(2,c{n+1,xc}(1,:))).^2));

        c{n+1,xc}(4,:)=abs(Astar_coord(1,d)-Astar_coord(1,c{n+1,xc}(1,:)))...
            +abs(Astar_coord(2,d)-Astar_coord(2,c{n+1,xc}(1,:)));
        c{n+1,xc}(5,:)=c{n+1,xc}(3,:)+c{n+1,xc}(4,:);

    end

end

cand=cat(2,c{:,:});
return;

Contact us at files@mathworks.com