|
create_patch.m.html |
|
|
Source file: create_patch.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 p = create_patch(xc,yc,zc,xe,ye,ze,qcm2,sdir,sval,...
contourlevels,mappedgrid,manifold,grid_number)
% Internal matlab routine for Clawpack graphics.
[xe_like, ye_like, ze_like] = get_xyzlike(xe,ye,ze,sdir);
[xc_like, yc_like, zc_like] = get_xyzlike(xc,yc,zc,sdir);
% -----------x---------------------------------------
% Create patch with q data
% --------------------------------------------------
[yem2_like,zem2_like] = meshgrid(ye_like,ze_like);
xem2_like = 0*yem2_like + sval;
[xem2, yem2, zem2] = get_xyz(xem2_like,yem2_like, zem2_like,sdir);
% This command needs phsical x,y,z coordinates, not permuted coordinates.
p = patch(surf2patch(xem2,yem2,zem2));
% Now set up colors...
[ycm2_like,zcm2_like] = meshgrid(yc_like,zc_like);
xcm2_like = 0*ycm2_like + sval;
[xcm2, ycm2, zcm2] = get_xyz(xcm2_like, ycm2_like, zcm2_like, sdir);
% This needs physical coordinates as well.
setcolors(p,xcm2, ycm2, zcm2,qcm2);
% -------------------------------------------------------------
% Provide useful information about this patch. Everything will be stored in
% the 'UserData' field of the patch handle p.
% --------------------------------------------------------------
% q data
userdata.q = qcm2;
userdata.qmin = min(min(qcm2));
userdata.qmax = max(max(qcm2));
% Spatial information
userdata.sdir = sdir;
userdata.sval = sval;
userdata.mappedgrid = mappedgrid;
userdata.manifold = manifold;
[vc{1:3}] = get_xyzlike(xc,yc,zc,sdir);
[ve{1:3}] = get_xyzlike(xe,ye,ze,sdir);
[vc_names{1:3}] = get_xyzlike('xc','yc','zc',sdir);
[ve_names{1:3}] = get_xyzlike('xe','ye','ze',sdir);
[mv_names{1:3}] = get_xyzlike('mx','my','mz',sdir);
[dv_names{1:3}] = get_xyzlike('dx','dy','dz',sdir);
for i = 1:3,
userdata = setfield(userdata,(vc_names{i}),vc{i});
userdata = setfield(userdata,(ve_names{i}), ve{i});
userdata = setfield(userdata,(mv_names{i}),length(vc{i}));
% If we are doing a manifold, then dz==1.
dv = ve{i}(2) - ve{i}(1);
userdata = setfield(userdata,(dv_names{i}),(dv == 0) + dv*(dv ~= 0));
end;
[vmin_names{1:3}] = get_xyzlike('xmin','ymin','zmin',sdir);
[vmax_names{1:3}] = get_xyzlike('xmax','ymax','zmax',sdir);
userdata = setfield(userdata,vmin_names{1},sval);
userdata = setfield(userdata,vmax_names{1},sval);
for i = 2:3,
userdata = setfield(userdata,(vmin_names{i}), ve{i}(1));
userdata = setfield(userdata,(vmax_names{i}), ve{i}(end));
end;
% Store Cartesian coodinates for use in mask_patches, and convert patch
% vertices to physical coordinates.
v = get(p,'Vertices');
userdata.cartCoords = v;
if (mappedgrid == 1 | manifold == 1)
if (mappedgrid == 1)
if (nargin('mapc2p') == 2)
[v(:,1),v(:,2)] = mapc2p(v(:,1),v(:,2));
else
[v(:,1),v(:,2),v(:,3)] = mapc2p(v(:,1),v(:,2),v(:,3));
end;
end;
if (manifold == 1)
[v(:,1),v(:,2), v(:,3)] = mapc2m(v(:,1),v(:,2));
end;
set(p,'Vertices',v);
end;
% -------------------------------------------------------
% Now create and store some other graphic objects that are associated with
% this patch.
% -------------------------------------------------------
% Contour lines.
userdata.contourLines = [];
if (~isempty(contourlevels))
c = contourc(yc_like,zc_like,qcm2,contourlevels,'k');
userdata.contourLines = create_clines(c,sval,sdir,mappedgrid,manifold);
end;
% Mesh data for showing coarsened mesh later...
% userdata.mesh = create_mesh(sdir,sval,xe,ye,ze,mappedgrid,manifold);
% The mesh is created with showmesh.
userdata.mesh.xlines = [];
userdata.mesh.ylines = [];
% Lines at intersections of x,y,z planes - for 3d only. These are actually
% created after all slices have been plotted.
userdata.grid_number = grid_number; % For computing intersections
userdata.xyIntersect = [];
userdata.xzIntersect = [];
userdata.yzIntersect = [];
% Patch borders,
userdata.border = create_border(sdir, sval, xe,ye,ze,mappedgrid,manifold);
% Set patch UserData.
set(p,'UserData',userdata);
% Set state
set(p,'Tag','on');