0001 function [mat,grp] = set_inho(srf,simp,vtx,mat_ref,val);
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 trimesh(srf,vtx(:,1),vtx(:,2),vtx(:,3));
0021 axis image;
0022 set(gcf,'Colormap',[0 0 0]);
0023 hidden off;
0024 
0025 mat = mat_ref;
0026 
0027 shifter = 1;
0028 
0029 beg_wm = simp(1,:);
0030 
0031 
0032 for dd=1:size(simp,1)
0033    
0034     
0035    if simp(dd,:) ~= beg_wm
0036       
0037       shifter = shifter + 1;
0038    end
0039    
0040    if simp(dd,:) == beg_wm
0041       
0042       shifter = dd-1;
0043       
0044       break;
0045    end
0046 end
0047 
0048 
0049 cnts = []; 
0050 
0051 for i=1:size(srf,1)
0052    
0053    a = srf(i,1);
0054    b = srf(i,2);
0055    c = srf(i,3);
0056    
0057    ccnx = (vtx(a,1) + vtx(b,1) + vtx(c,1))/3;
0058    ccny = (vtx(a,2) + vtx(b,2) + vtx(c,2))/3;
0059    ccnz = (vtx(a,3) + vtx(b,3) + vtx(c,3))/3;
0060    
0061    ccn = [ccnx,ccny,ccnz];
0062    
0063    cnts = [cnts; ccn];
0064 end
0065 
0066 
0067 
0068    
0069 disp('Click on the figure to locate the inhomogeneity');
0070 pause;
0071 
0072    
0073    [sel] = laserbeam(vtx,srf,cnts); 
0074    
0075    
0076    
0077    
0078    for rr=1:size(simp,1)
0079       
0080       if ismember(srf(sel,:),simp(rr,:)) == [1 1 1] 
0081          
0082          the_x = simp(rr+shifter,:);
0083          
0084          break;
0085          
0086       end
0087    
0088 end
0089 
0090   
0091    the_nd = setdiff(the_x, srf(sel,:)); 
0092    
0093    grp = [];
0094    Ssimp = [];
0095   
0096    
0097    for qq=1:size(simp,1)
0098       
0099       if sum(ismember(simp(qq,:),the_nd)) == 1
0100          
0101          grp = [grp; simp(qq+shifter,:)];
0102          
0103          Ssimp = [Ssimp; (qq+shifter)];
0104          
0105          mat(qq+shifter) = val;
0106       end
0107    end
0108    
0109    
0110     
0111    for cc=1:size(grp,1)
0112       
0113    this_x = grp(cc,:);
0114    
0115    
0116    hold on;
0117    
0118    if val > mat_ref(Ssimp(cc))
0119       
0120       
0121       Xas = vtx(this_x(1:3),1);
0122       Yas = vtx(this_x(1:3),2);
0123       Zas = vtx(this_x(1:3),3);
0124       
0125       patch(Xas,Yas,Zas,'r','EdgeColor','none');
0126       
0127       Xbs = vtx(this_x([1,2,4]),1);
0128       Ybs = vtx(this_x([1,2,4]),2);
0129       Zbs = vtx(this_x([1,2,4]),3);
0130       patch(Xbs,Ybs,Zbs,'r','EdgeColor','none');
0131       
0132       
0133       Xcs = vtx(this_x([1,3,4]),1);
0134       Ycs = vtx(this_x([1,3,4]),2);
0135       Zcs = vtx(this_x([1,3,4]),3);
0136       patch(Xcs,Ycs,Zcs,'r','EdgeColor','none');
0137       
0138       
0139       Xds = vtx(this_x(2:4),1);
0140       Yds = vtx(this_x(2:4),2);
0141       Zds = vtx(this_x(2:4),3);
0142       patch(Xds,Yds,Zds,'r','EdgeColor','none');
0143    end
0144    
0145       if val < mat_ref(Ssimp(cc))
0146          
0147       Xas = vtx(this_x(1:3),1);
0148       Yas = vtx(this_x(1:3),2);
0149       Zas = vtx(this_x(1:3),3);
0150       patch(Xas,Yas,Zas,'b','EdgeColor','none');
0151       
0152       Xbs = vtx(this_x([1,2,4]),1);
0153       Ybs = vtx(this_x([1,2,4]),2);
0154       Zbs = vtx(this_x([1,2,4]),3);
0155       patch(Xbs,Ybs,Zbs,'b','EdgeColor','none');
0156       
0157       Xcs = vtx(this_x([1,3,4]),1);
0158       Ycs = vtx(this_x([1,3,4]),2);
0159       Zcs = vtx(this_x([1,3,4]),3);
0160       patch(Xcs,Ycs,Zcs,'b','EdgeColor','none');
0161       
0162       Xds = vtx(this_x(2:4),1);
0163       Yds = vtx(this_x(2:4),2);
0164       Zds = vtx(this_x(2:4),3);
0165       patch(Xds,Yds,Zds,'b','EdgeColor','none');
0166 
0167       end
0168       
0169 end
0170    
0171    
0172    view(3);
0173    camlight right; 
0174    lighting flat;
0175 
0176 
0177 
0178 
0179 
0180 
0181 
0182 
0183