亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? shpath1.txt

?? 最短路徑尋優路徑規劃程序
?? TXT
字號:
function varargout=shpath(MM,ri,ci,rf,cf)
% SHPATH - shortest path with obstacle avoidance
%
% USAGE
%
% [r,c]    = shpath(M,ri,ci,rf,cf)
% [r,c,da] = shpath(M,ri,ci,rf,cf)
%
% VARIABLES
%
% M =       terrain grid matrix of ones and zeros, where ones represent
%           grid squares containing obstacles, and zeros represent clear
%           terrain
% (ri,ci) = intial ROW and COLUMN on the terrain grid matrix, where the
%           path is to begin
% (rf,cf) = final ROW and COLUMN on the terrain grid matrix, where the
%           path is to end
% (r,c)   = ROW and COLUMN coordinates along the shortest obstacle-avoiding
%           path. Altough r and c start and end on the (integer) intial and
%           final point coordinates, intermediate points on the path can
%           have fractional coordinate values
% da      = optional matrix of relative distances from each map point to
%           the FINAL point (rf,cf). The ditance units are arbitrary. This
%           is the raw output of the intitial propagation (see below and
%           see example).
%
% NOTES (1) To avoid confusion over XY conventions for grid matrices,
%            the issue is avoided entirely by referring only to the
%            row and column entries in the terrain grid matrix. The user is
%            invited to employ whatever convention he or she is comfortable
%            using for mapping Cartesian coordinates to the grid matrix
%            entries.
%        (2) When multiple equally short paths are available, one is chosen
%            arbitrarily (but consitently from run to run for identical
%            inputs).
%        (3) This algorithm closely approximates a shortest path with
%            reasonable accuracy and CPU time. A clever user may be able
%            to fool the algorithm with a combination of mutiple, equally
%            short paths, together with obstacles designed to trap the
%            algorithm before it has chosen one of them; however
%        (4) If there is a unique shortest path, the algorithm will find
%            it.
%        (5) Unlike previous versions, the algorithm now WILL accommodate
%            pathways through holes or causeways only one pixel wide.
%            Note that obstacles consisting of diagonally joined grid
%            squares will not prevent motion since diagonal moves are
%            allowed. If you need a diagonal or curved obstacle, be sure to
%            eliminate holes for diagonal moves by filling in adjacent
%            squares.
%        (6) If there is sufficient interest, I may mex the calculations to
%            greatly improve the calcuation speed.
%        (7) A two-stage solution is employed. First, a propagation is
%            performed to determine the shortest pathway. Then, the pathway
%            is tightened around corners and through straight-a-ways.
%        (8) No warranty; use at your own risk.
%        (9) Version 1.0, intial writing
%       (10) Version 1.1, input checking and handling of case with no un-
%            obstructed route existing
%       (11) Version 1.2, propagation phase data output
%       (12) Version 1.3, algorithm speedup, one-pixel hole penetration
%       (13) Michael Kleder, Oct 2005
%
% EXAMPLE EXECUTION
%
% % Intitial coordinates (row,col)
% ri=85;
% ci=95;
% % Final coordinates (row,col)
% rf=5;
% cf=20;
% % create map grid
% M = zeros(100);
% % create obstacles
% M(80,90100)=1;
% M(30,170)=1;
% M(30,72100)=1;
% M(40100,20)=1;
% M(7090,70)=1;
% M(7090,90)=1;
% M(70,7090)=1;
% M(90,7090)=1;
% M(10,1590)=1;
% for n=020;
%     M(30-n,30+n)=1; % diagonal line
% end
% for rd=9.110;
%     th = linspace(0,2pi,1000);
%     r=50+rdsin(th);
%     c=70+rdcos(th);
%     r=round(r);
%     c=round(c);
%     M(sub2ind(size(M),r,c))=1;
% end
% hf=figure;
% hold on
% hM=pcolor(M);
% colormap([0 0 .5;1 0 0])
% set(hM,'edgecolor','none','facecolor','flat')
% % make obstacle grid square edge boundaries plot exactly true
% set(hM,'xdata',linspace(.5,99.5,100),'ydata',linspace(.5,99.5,100))
% axis ij
% axis equal
% axis tight
% plot(ci,ri,'g.')
% plot(cf,rf,'g.')
% xlim([1 size(M,2)])
% ylim([1 size(M,1)])
% set(gca,'color',[0 0 .5])
% xlabel('Column Coordinate')
% ylabel('Row Coordinate')
% title('Computing Shortest Path...','fontsize',12)
% drawnow
% % compute path
% [r,c,da]=shpath(M,ri,ci,rf,cf);
% % display result
% plot(c,r,'g.-')
% title('Shortest Obstacle-Avoiding Path','fontsize',12)
% figure
% hs=surf(da);
% set(hs,'edgecolor','none')
% axis ij
% axis square
% axis tight
% view(0,90)
% title('Relative Path Distance from Final Point')
% cm=rand(20,3);
% colormap(cm);
% colormap copper
% colorbar
% set(gcf,'units','pixels')
% p=get(gcf,'pos');
% set(gcf,'pos',[p(1)+50 p(2)-50 p(34)])
% figure(hf)

% input handling

M=logical(MM);
if any([ri ci rf cf] ~= round([ri ci rf cf]))
    error('Initial and final points must have integer row & column coordinates.')
end
if risize(M,1)  ci  size(M,2)  rf  size(M,1)  cf  size(M,2)  ...
        any([ri ci rf cf]  1)
    error('Initial and final points must be within the grid.')
end
if M(ri,ci) = 1
    error('Initial point is within an obstacle grid square.')
end
if M(rf,cf) = 1
    error('Destination point is within an obstacle grid square.')
end
if ri == rf & ci == cf & nargout  3 % no need to solve
    varargout{1}=[ri;rf];
    varargout{2}=[ci;cf];
    return
end

% compute travel time matrix via finite element diffusion

speed = .5;
W=zeros(size(M));
W(ri,ci)=1;
H=zeros(size(M));
yespop = sum(W()1);
nochangepop = 0;
itercount = 0;
while nochangepop  20
    itercount = itercount + 1;
    diffconst = 0.1;
    W(1end-1 ,) = W(1end-1 ,) + diffconst  W(2end,);
    W(2end,) = W(2end,) + diffconst  W(1end-1 ,);
    W(,1end-1 ) = W(,1end-1 ) + diffconst  W(,2end );
    W(,2end) = W(,2end) + diffconst  W(,1end-1 );
    W(logical(M)) = 0;
    H(logical(W1 & ~H))=itercount;
    yespopold = yespop;
    yespop = sum(W()1);
    if abs(yespop-yespopold)  1
        nochangepop = nochangepop + 1;
    end
end

% reached the end

if H(rf,cf) == 0
    warning('No unobstructed route exists.')
    varargout{1}=NaN;
    varargout{2}=NaN;
    if nargout2
        varargout{3}=NaN;
    end
    return
end

% give travel time matrix if requested

H(H==0)=nan;
if nargout  2
    varargout{3}=H;
end

% encode slightly larger travel time for obstacles
HB = nanones(size(H)+2);
HB(2end-1,2end-1)=H;
[kr,kc]=find(isnan(H));
% max local value
HM = max(cat(3,HB(1end-2,1end-2),...
    HB(1end-2,2end-1),...
    HB(1end-2,3end  ),...
    HB(2end-1,1end-2),...
    HB(2end-1,3end  ),...
    HB(3end  ,1end-2),...
    HB(3end  ,2end-1),...
    HB(3end  ,3end  )),[],3);
H(isnan(H))=HM(isnan(H))+1; % now 1+max of neighbors

% preallocate path storage space
r=ones(prod(size(M)),1)nan;
c=ones(prod(size(M)),1)nan;

% start at end and go backwards down the gradient
r(1)=rf;
c(1)=cf;
[GX,GY] = gradient(H);
GX = -GX;
GY = -GY;
iter = 0;
continflag=1;
rmax=size(M,1);
cmax=size(M,2);
while continflag
    iter = iter+1;
    dr = interpn(GY,r(iter),c(iter),'linear');
    dc = interpn(GX,r(iter),c(iter),'linear');
    dr = dr  (rand.002+.999);
    dc = dc  (rand.002+.999);
    dv = sqrt(dr^2+dc^2);
    dr = speed  drdv;
    dc = speed  dcdv;
    r(iter+1)=r(iter) + dr;
    c(iter+1)=c(iter) + dc;
    if r(iter+1)1;r(iter+1)=1;end
    if c(iter+1)1;c(iter+1)=1;end
    if r(iter+1)rmax;r(iter+1)=rmax;end
    if c(iter+1)cmax;c(iter+1)=cmax;end
    if ((r(iter+1)-ri)^2+(c(iter+1)-ci)^2)1;
        continflag=0;
    end
end

% clean up path coordinates

r=r(~isnan(r));
c=c(~isnan(c));
c=c(end-11);
r=r(end-11);
if c(1) ~= ci
    c=[ci;c];
end
if c(end) ~= cf
    c=[c;cf];
end
if r(1)~=ri
    r=[ri;r];
end
if r(end)~=rf
    r=[r;rf];
end

% rough path done. Now tighten the string

continflag=1;
iter=0;
while continflag
    iter=iter+1;
    if iter50000
        continflag=0;
        warning('Max iterations exceeded.')
    end
    rold = r;
    cold = c;
    r2 = [r(1);(r(1end-2)+r(3end))2;r(end)];
    c2 = [c(1);(c(1end-2)+c(3end))2;c(end)];
    dr = r2-r;
    dc = c2-c;
    dn = .5sqrt(dr.^2+dc.^2);
    k = dn.1;
    dr(k) = .1dr(k).dn(k);
    dc(k) = .1dc(k).dn(k);
    r=r+dr;
    c=c+dc;
    k=interpn(M,r,c,'nearest').5;
    r(k)=r(k)-dr(k);
    c(k)=c(k)-dc(k);
    if max(abs([r-rold;c-cold]))  1e-4 % decrease to 1e-6 for finer precision
        continflag=0;
    end
end

varargout{1}=r;
varargout{2}=c;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产自产拍在线| 亚洲福利一二三区| 欧美日韩一级大片网址| 国产真实乱偷精品视频免| 亚洲美女少妇撒尿| 久久综合999| 欧美日韩亚洲国产综合| av福利精品导航| 韩国精品主播一区二区在线观看| 亚洲精品国产一区二区精华液| 欧美成人高清电影在线| 欧美自拍偷拍一区| 成人综合日日夜夜| 国产在线视频精品一区| 日韩在线a电影| 亚洲精品成人精品456| 国产精品午夜免费| 久久久久久久久伊人| 欧美精品18+| 精品视频在线免费| 在线亚洲一区观看| 99re这里只有精品首页| 国产69精品久久久久777| 久草中文综合在线| 毛片av一区二区| 午夜久久电影网| 午夜一区二区三区视频| 亚洲黄色小视频| 亚洲日韩欧美一区二区在线| 中文字幕免费一区| 日本一区二区三区视频视频| 26uuu另类欧美亚洲曰本| 日韩欧美二区三区| 欧美成人精品二区三区99精品| 欧美日韩在线一区二区| 欧美曰成人黄网| 在线欧美日韩精品| 欧美午夜在线一二页| 在线观看亚洲成人| 欧美日韩在线免费视频| 欧美午夜精品一区| 欧美三级中文字幕在线观看| 欧美吻胸吃奶大尺度电影| 欧美日韩你懂得| 欧美精品少妇一区二区三区| 制服丝袜亚洲色图| 欧美mv日韩mv| 国产亚洲精品超碰| 国产午夜亚洲精品理论片色戒| 国产无遮挡一区二区三区毛片日本| 久久伊人蜜桃av一区二区| 久久无码av三级| 国产精品毛片久久久久久久| 国产精品久久久久影院老司| 亚洲欧美精品午睡沙发| 亚洲在线观看免费视频| 日韩激情视频网站| 精品一二线国产| 丁香啪啪综合成人亚洲小说 | 亚洲日本欧美天堂| 亚洲精品成人悠悠色影视| 亚洲综合区在线| 热久久一区二区| 国产精品一二三区在线| 91视频精品在这里| 欧美区一区二区三区| 久久天天做天天爱综合色| 国产精品久久久久一区二区三区| 亚洲精品高清在线观看| 日本不卡免费在线视频| 国产成人三级在线观看| 91在线播放网址| 日韩亚洲欧美在线| 欧美国产日韩在线观看| 亚洲一区二区三区爽爽爽爽爽| 青青草一区二区三区| 成人午夜av影视| 在线精品视频一区二区三四| 精品国产污网站| 亚洲天堂av老司机| 久久精品国产99国产精品| www.日本不卡| 日韩三级伦理片妻子的秘密按摩| 久久免费电影网| 亚洲综合另类小说| 国产资源精品在线观看| 欧美性生活大片视频| 国产午夜精品久久久久久免费视| 亚洲综合清纯丝袜自拍| 国产白丝网站精品污在线入口| 欧美在线短视频| 国产精品系列在线| 美美哒免费高清在线观看视频一区二区 | 国产sm精品调教视频网站| 欧美视频你懂的| 欧美激情资源网| 日韩精品色哟哟| 不卡电影一区二区三区| 日韩一区二区在线观看视频播放| 日韩一区在线播放| 国产在线视频不卡二| 欧美三级韩国三级日本三斤| 国产欧美久久久精品影院| 日韩精品一二三| 色综合久久久久综合体桃花网| 精品久久99ma| 偷偷要91色婷婷| 91免费看`日韩一区二区| 久久天天做天天爱综合色| 日韩**一区毛片| 欧美探花视频资源| 最新欧美精品一区二区三区| 国产精品夜夜嗨| 26uuu精品一区二区| 人人精品人人爱| 337p亚洲精品色噜噜噜| 亚洲第一福利一区| 日本精品视频一区二区三区| 欧美经典一区二区三区| 国产美女视频91| 亚洲精品一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ| 欧美日本乱大交xxxxx| 4438亚洲最大| 美女高潮久久久| 国产精品一区久久久久| 北岛玲一区二区三区四区| 精品91自产拍在线观看一区| 日韩国产高清在线| 欧美日韩一卡二卡三卡 | 欧美日韩精品一区二区在线播放| 亚洲www啪成人一区二区麻豆| 国产欧美精品区一区二区三区 | 国内精品伊人久久久久av影院| 一区二区免费在线| 中文字幕一区二区在线播放| 久久久99久久| 欧美精品一区二区久久久| 欧美老人xxxx18| 欧美三级乱人伦电影| 欧美日韩综合在线| 在线观看精品一区| 日本精品视频一区二区三区| 色综合久久久久久久久久久| 成人美女视频在线看| 国产成人高清在线| 丁香婷婷综合色啪| 成人精品高清在线| 丁香婷婷综合激情五月色| 国产成人超碰人人澡人人澡| 国产精品资源网| 国产成人精品免费| 国产·精品毛片| www.日韩在线| 欧美在线free| 91麻豆精品国产| 欧美sm美女调教| 国产精品网站在线| 亚洲视频一二区| 亚洲欧美另类综合偷拍| 亚洲一区免费观看| 五月婷婷激情综合| 日韩av中文字幕一区二区| 蜜臀a∨国产成人精品| 久久成人av少妇免费| 久久99国产精品免费网站| 国产综合久久久久久鬼色| 国产.欧美.日韩| 91啦中文在线观看| 欧美日本不卡视频| 精品国产成人在线影院| 中文字幕精品一区| 亚洲蜜臀av乱码久久精品 | 国产精品中文有码| av电影在线观看完整版一区二区| 日本精品裸体写真集在线观看| 欧美日韩精品一区二区| 久久亚区不卡日本| 亚洲欧美日韩电影| 精品一区二区三区久久久| 97精品视频在线观看自产线路二| 欧美日韩午夜在线| 欧美高清一级片在线观看| 亚洲自拍欧美精品| 国产一区二区三区观看| 97超碰欧美中文字幕| 日韩精品一区二区三区中文不卡 | 亚洲一区二区三区四区在线| 久久精品国产77777蜜臀| 不卡的av在线播放| 9191成人精品久久| 成人免费在线播放视频| 久草这里只有精品视频| 91国产免费观看| 国产欧美一二三区| 天堂一区二区在线| 粉嫩一区二区三区性色av| 日韩三级视频在线看| 亚洲一区二区三区在线| 99精品久久只有精品|