📄 updatechain.m
字号:
function [chain,mask,IsLoop]=updateChain(chain,mask,tmpNode)%UPDATECHAIN Summary of this function goes here% Detailed explanation goes hereIsLoop=0;i=ceil(tmpNode(1)/size(mask,2));j=tmpNode(1)-(i-1)*size(mask,2);mask(i,j)=1;[a b]=find(chain==tmpNode(2));[c d]=find(chain==tmpNode(3));if a==c & (( b==1 & d==size(chain,2) ) | ( b==size(chain,2) & d==1 )) & (size(chain,2)==size(mask,1)*size(mask,2)-1) chain(1,end+1)=tmpNode(1); chain(1,end+1)=chain(1,1); IsLoop=2; return;endif (b>1)&(b<size(chain,2)) if chain(a,b+1)~=0 IsLoop=1; endendif (d>1)&(d<size(chain,2)) if chain(c,d+1)~=0 IsLoop=1; endendif (a==c) IsLoop=1;else if isempty(a)&isempty(c) chain(end+1,1)=tmpNode(2); chain(end,2)=tmpNode(1); chain(end,3)=tmpNode(3); i=ceil(tmpNode(2)/size(mask,2)); j=tmpNode(2)-(i-1)*size(mask,2); mask(i,j)=1; i=ceil(tmpNode(3)/size(mask,2)); j=tmpNode(3)-(i-1)*size(mask,2); mask(i,j)=1; else if ~isempty(a)&~isempty(c) if b==1 & d==1 tmp1=chain(a,:); tmp1=rot90(tmp1); tmp1=rot90(tmp1); tmp2=chain(c,:); tmp=[tmp1 tmpNode(1) tmp2]; tt=find(tmp==0); tmp(tt)=[]; chain([a c],:)=[]; chain(end+1,1:size(tmp,2))=tmp; else if b==1 & d~=1 tmp1=chain(a,:); tmp2=chain(c,:); tmp=[tmp2 tmpNode(1) tmp1]; tt=find(tmp==0); tmp(tt)=[]; chain([a c],:)=[]; chain(end+1,1:size(tmp,2))=tmp; else if b~=1 & d==1 tmp1=chain(a,:); tmp2=chain(c,:); tmp=[tmp1 tmpNode(1) tmp2]; tt=find(tmp==0); tmp(tt)=[]; chain([a c],:)=[]; chain(end+1,1:size(tmp,2))=tmp; else if b~=1 & d~=1 tmp1=chain(a,:); tmp1=rot90(tmp1); tmp1=rot90(tmp1); tmp2=chain(c,:); tmp=[tmp2 tmpNode(1) tmp1]; tt=find(tmp==0); tmp(tt)=[]; chain([a c],:)=[]; chain(end+1,1:size(tmp,2))=tmp; end end end end else if isempty(a) i=ceil(tmpNode(2)/size(mask,2)); j=tmpNode(2)-(i-1)*size(mask,2); mask(i,j)=1; if d==1 tmp1=chain(c,:); tmp=[tmpNode(2) tmpNode(1) tmp1]; tt=find(tmp==0); tmp(tt)=[]; chain(c,:)=[]; chain(end+1,1:size(tmp,2))=tmp; else tmp1=chain(c,:); tmp=[tmp1 tmpNode(1) tmpNode(2)]; tt=find(tmp==0); tmp(tt)=[]; chain(c,:)=[]; chain(end+1,1:size(tmp,2))=tmp; end else if isempty(c) i=ceil(tmpNode(3)/size(mask,2)); j=tmpNode(3)-(i-1)*size(mask,2); mask(i,j)=1; if b==1 tmp1=chain(a,:); tmp=[tmpNode(3) tmpNode(1) tmp1]; tt=find(tmp==0); tmp(tt)=[]; chain(a,:)=[]; chain(end+1,1:size(tmp,2))=tmp; else tmp1=chain(a,:); tmp=[tmp1 tmpNode(1) tmpNode(3)]; tt=find(tmp==0); tmp(tt)=[]; chain(a,:)=[]; chain(end+1,1:size(tmp,2))=tmp; end end end end endendif size(chain,2)==size(mask,1)*size(mask,2) IsLoop=2; end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -