0001 function seg=bbxflatsegment(node,loop)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 pos=node(loop,:);
0023
0024
0025 mi=min(pos);
0026 ma=max(pos);
0027
0028
0029 idx0=find(abs(pos(:,1)-mi(1))<1e-6)';
0030 idx1=find(abs(pos(:,1)-ma(1))<1e-6)';
0031
0032 idy0=find(abs(pos(:,2)-mi(2))<1e-6)';
0033 idy1=find(abs(pos(:,2)-ma(2))<1e-6)';
0034
0035 idz0=find(abs(pos(:,3)-mi(3))<1e-6)';
0036 idz1=find(abs(pos(:,3)-ma(3))<1e-6)';
0037
0038
0039
0040 if(length(idx0)<=3) idx0=[]; end
0041 if(length(idx1)<=3) idx1=[]; end
0042 if(length(idy0)<=3) idy0=[]; end
0043 if(length(idy1)<=3) idy1=[]; end
0044 if(length(idz0)<=3) idz0=[]; end
0045 if(length(idz1)<=3) idz1=[]; end
0046
0047 nn=length(loop);
0048
0049
0050
0051 if(unique(length(idx0))==nn | unique(length(idx1))==nn ...
0052 |unique(length(idy0))==nn | unique(length(idy1))==nn ...
0053 |unique(length(idz0))==nn | unique(length(idz1))==nn)
0054 seg=loop(:)';
0055 return;
0056 end
0057
0058
0059
0060 if(length(unique([idx0 idy0 idz0]))==nn)
0061 seg= [loop(idx0),nan,loop(idy0),nan,loop(idz0)];
0062 elseif(length(unique([idx0 idy1 idz0]))==nn)
0063 seg= [loop(idx0),nan,loop(idy1),nan,loop(idz0)];
0064 elseif(length(unique([idx0 idy0 idz1]))==nn)
0065 seg= [loop(idx0),nan,loop(idy0),nan,loop(idz1)];
0066 elseif(length(unique([idx0 idy1 idz1]))==nn)
0067 seg= [loop(idx0),nan,loop(idy1),nan,loop(idz1)];
0068 elseif(length(unique([idx1 idy0 idz0]))==nn)
0069 seg= [loop(idx1),nan,loop(idy0),nan,loop(idz0)];
0070 elseif(length(unique([idx1 idy1 idz0]))==nn)
0071 seg= [loop(idx1),nan,loop(idy1),nan,loop(idz0)];
0072 elseif(length(unique([idx1 idy0 idz1]))==nn)
0073 seg= [loop(idx1),nan,loop(idy0),nan,loop(idz1)];
0074 elseif(length(unique([idx1 idy1 idz1]))==nn)
0075 seg= [loop(idx1),nan,loop(idy1),nan,loop(idz1)];
0076 else
0077 seg=[];
0078 end
0079
0080
0081
0082 if(length(seg) & any(isnan(seg)))
0083 id=regexp(sprintf('%d',isnan(seg)),'11');
0084 if(length(id))
0085 seg(id+1)=[];
0086 end
0087 end