create_sliceintersections.m.html | ![]() |
Source file: create_sliceintersections.m | |
Directory: /home/rjl/git/rjleveque/clawpack-4.x/matlab | |
Converted: Sun May 15 2011 at 19:15:56 using clawcode2html | |
This documentation file will not reflect any later changes in the source file. |
function create_sliceintersections(mappedgrid) % Internal matlab routine for Clawpack graphics. % Now plot intersections of x-y planes, x-z planes and y-z planes. sdirs = {'x', 'y', 'z'}; ve_names = {'xe','ye','ze'}; isect_names = {'yzIntersect','xzIntersect','xyIntersect'}; for idir = 1:3, for jdir = (idir+1):3, slices_idir = get_slices(sdirs{idir}); slices_jdir = get_slices(sdirs{jdir}); % Now consider all pair-wise combinations of these two sets of slices for n = 1:length(slices_idir); for m = 1:length(slices_jdir); % cell2mat doesn't seem to exist on some versions of Matlab % so I have copied my matlab version to ../matlab2 files. % pvec = cell2mat_claw(slices_idir{n}); % qvec = cell2mat_claw(slices_jdir{m}); pvec = []; qvec = []; % Need a big list of all patches we can intersect for ll = 1:length(slices_idir{n}), pvec = [pvec slices_idir{n}{ll}]; end; for ll = 1:length(slices_jdir{m}), qvec = [qvec slices_jdir{m}{ll}]; end; for k = 1:length(pvec), for l = 1:length(qvec), p = pvec(k); q = qvec(l); udata_p = get(p,'UserData'); udata_q = get(q,'UserData'); np = udata_p.grid_number; nq = udata_q.grid_number; if (np == nq) % This sets two of the coordinates for the line we are going % to draw sval_p = udata_p.sval; sval_q = udata_q.sval; kdir = (1:3); kdir([idir; jdir]) = []; % Third direction is all that is left ke = getfield(udata_p,ve_names{kdir}); vdata{idir} = sval_p + 0*ke; vdata{jdir} = sval_q + 0*ke; vdata{kdir} = ke; if (mappedgrid == 1) [xdata, ydata, zdata] = mapc2p(vdata{:}); else [xdata, ydata, zdata] = deal(vdata{:}); end; h = line('XData',xdata, 'YData',ydata,'ZData',zdata); sp = getfield(udata_p,isect_names{kdir}); sp(end+1).line = h; sp(end+1).sharedPatch = q; sq = getfield(udata_q,isect_names{kdir}); sq(end+1).line = h; sq(end+1).sharedPatch = p; udata_p = setfield(udata_p,isect_names{kdir},sp); udata_q = setfield(udata_q,isect_names{kdir},sq); set(p,'UserData',udata_p); set(q,'UserData',udata_q); end; % np == nq end; % (l) loop over all patches end; % (k) loop over all patches end; % (m) loop over all slices end; % (n) loop over all slices end; % jdir end; % idir