diff private/EDB1plotpath.m @ 0:90220f7249fc

Initial commit
author Timos Papadopoulos <tp@isvr.soton.ac.uk>
date Sat, 16 Nov 2013 18:25:24 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/private/EDB1plotpath.m	Sat Nov 16 18:25:24 2013 +0000
@@ -0,0 +1,167 @@
+function EDB1plotpath(eddatafile,reflpathsfile,plotoptions)
+% EDB1plotpath - Plots a model which is given in an eddatafile
+% and one or more of the paths in an edreflpathsfile.
+%
+% Input parameters:
+%   eddatafile      The input file.
+%   reflpathsfile   The file with reflpaths.
+%   plotoptions     The row in the reflpathsfile that should be plotted.
+%
+% Sources and receivers are taken from an sdatafile and an rdatafile, the file name of
+% which is assumed to be similar to the eddatafile.
+%
+% Uses functions EDB1strpend, EDB1myvalueinput
+%
+% ----------------------------------------------------------------------------------------------
+%   This file is part of the Edge Diffraction Toolbox by Peter Svensson.                       
+%                                                                                              
+%   The Edge Diffraction Toolbox is free software: you can redistribute it and/or modify       
+%   it under the terms of the GNU General Public License as published by the Free Software     
+%   Foundation, either version 3 of the License, or (at your option) any later version.        
+%                                                                                              
+%   The Edge Diffraction Toolbox is distributed in the hope that it will be useful,       
+%   but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS  
+%   FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.             
+%                                                                                              
+%   You should have received a copy of the GNU General Public License along with the           
+%   Edge Diffraction Toolbox. If not, see <http://www.gnu.org/licenses/>.                 
+% ----------------------------------------------------------------------------------------------
+% Peter Svensson (svensson@iet.ntnu.no) 20090708
+%
+% EDB1plotpath(eddatafile,reflpathsfile,plotoptions);
+
+%--------------------------------------------------------------
+% Read the input files
+
+[eddatafilepath,eddatafile,fileext] = fileparts(eddatafile);
+eddatafile = [eddatafile,fileext];
+Filestem = EDB1strpend(eddatafile,'_eddata');
+
+[reflpathsfilepath,reflpathsfile,fileext] = fileparts(reflpathsfile);
+reflpathsfile = [reflpathsfile,fileext];
+
+if ~isempty(eddatafilepath)
+    eval(['load ',eddatafilepath,filesep,eddatafile])
+else
+    eval(['load ',eddatafile])    
+end
+
+if ~isempty(reflpathsfilepath)
+    eval(['load ',reflpathsfilepath,filesep,reflpathsfile])
+else
+    eval(['load ',reflpathsfile])    
+end
+
+plotsources = 1;
+plotreceivers = 1;
+
+%--------------------------------------------------------------
+
+ncornersperplanevec = double(ncornersperplanevec);
+if plotsources
+    sdatafile = [eddatafilepath,Filestem,'_sdata.mat'];
+    if exist(sdatafile) == 2
+        eval(['load ',sdatafile])
+    else
+        error(['ERROR: The sdata file named ',sdatafile,' could not be opened'])    
+    end
+end
+if plotreceivers
+    rdatafile = [eddatafilepath,Filestem,'_rdata.mat'];
+    if exist(rdatafile) == 2
+        eval(['load ',rdatafile])
+    else
+        error(['ERROR: The rdata file named ',rdatafile,' could not be opened'])    
+    end
+end
+
+%--------------------------------------------------------------
+
+[ncorners,slask] = size(corners);
+[nedges,slask] = size(edgecorners);
+[nplanes,slask] = size(planenvecs);
+
+planelist = 1:nplanes;
+
+% viewpos = EDB1myvalueinput('From which point do you want to watch the model? (x y z, or az el, with spaces inbetween) ',-1);
+viewpos = [1 0 0];
+axis equal
+
+hold off
+for ii = 1:nedges
+	co1 = edgecorners(ii,1);
+	co2 = edgecorners(ii,2);
+	iv = [co1;co2];
+	plot3(corners(iv,1),corners(iv,2),corners(iv,3))
+    if ii ==1
+        view(viewpos)
+        hold
+    end
+end
+
+if plotsources == 1
+    plot3(sources(:,1),sources(:,2),sources(:,3),'*');
+end
+
+if plotreceivers == 1
+    plot3(receivers(:,1),receivers(:,2),receivers(:,3),'ro');
+end
+
+%---------------------------------------------------------------
+% Plot the path
+
+pathtype = pathtypevec(plotoptions,:)
+reflpath = reflpaths(plotoptions,:)
+norder =sum(pathtype ~= 0);
+nspecorder = sum(pathtype == 115);
+speccols = find(pathtype == 115);
+diffcols = find(pathtype == 100);
+
+
+x1 = sources(1,1);
+y1 = sources(1,2);
+z1 = sources(1,3);
+
+for ii = 1:nspecorder+1
+    x2 = specextradata(plotoptions,1+3*(ii-1));
+    y2 = specextradata(plotoptions,2+3*(ii-1));
+    z2 = specextradata(plotoptions,3+3*(ii-1));    
+    plot3(x2,y2,z2,'o')
+    line([x1;x2],[y1;y2],[z1;z2]);
+    x1 = x2;
+    y1 = y2;
+    z1 = z2;
+end
+
+x2 = receivers(1,1);
+y2 = receivers(1,2);
+z2 = receivers(1,3);
+line([x1;x2],[y1;y2],[z1;z2]);
+
+% Print the involved plane numbers
+
+reflplanes = reflpath(speccols);
+
+for ii = reflplanes
+    midpoint = mean(corners(planecorners(ii,1:ncornersperplanevec(ii)),:));
+    endpoint = midpoint + planenvecs(ii,:);
+    text(endpoint(1),endpoint(2),endpoint(3),int2str(ii));
+end
+
+% Print the involved edge numbers
+
+if ~isempty(diffcols)
+    diffedges = reflpath(diffcols);
+    for ii = diffedges
+         midpoint = mean(corners(edgecorners(ii,1:2),:));
+         text(midpoint(1),midpoint(2),midpoint(3),int2str(ii));
+    	co1 = edgecorners(ii,1);
+        co2 = edgecorners(ii,2);
+        iv = [co1;co2];
+        h = plot3(corners(iv,1),corners(iv,2),corners(iv,3));
+        set(h,'LineWidth',3)
+         
+         
+    end
+    
+end