You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.3 KiB
92 lines
2.3 KiB
3 years ago
|
function hh = quadmesh(quad,x,y,z,varargin)
|
||
|
%QUADMESH Quadrilateral mesh plot.
|
||
|
% QUADMESH(QUAD,X,Y,Z,C) displays the quadrilaterals defined in the M-by-4
|
||
|
% face matrix QUAD as a mesh. A row of QUAD contains indexes into
|
||
|
% the X,Y, and Z vertex vectors to define a single quadrilateral face.
|
||
|
% The edge color is defined by the vector C.
|
||
|
%
|
||
|
% QUADMESH(QUAD,X,Y,Z) uses C = Z, so color is proportional to surface
|
||
|
% height.
|
||
|
%
|
||
|
% QUADMESH(TRI,X,Y) displays the quadrilaterals in a 2-d plot.
|
||
|
%
|
||
|
% H = QUADMESH(...) returns a handle to the displayed quadrilaterals.
|
||
|
%
|
||
|
% QUADMESH(...,'param','value','param','value'...) allows additional
|
||
|
% patch param/value pairs to be used when creating the patch object.
|
||
|
%
|
||
|
% See also PATCH.
|
||
|
%
|
||
|
% Script code based on copyrighted code from mathworks for TRIMESH.
|
||
|
% Allan P. Engsig-Karup, apek@mek.dtu.dk.
|
||
|
|
||
|
ax = axescheck(varargin{:});
|
||
|
ax = newplot(ax);
|
||
|
|
||
|
if nargin == 3 || (nargin > 4 && ischar(z))
|
||
|
d = tri(:,[1 2 3 4 1])';
|
||
|
if nargin == 3
|
||
|
h = plot(ax, x(d), y(d));
|
||
|
else
|
||
|
h = plot(ax, x(d), y(d),z,varargin{1},varargin{2:end});
|
||
|
end
|
||
|
if nargout == 1, hh = h; end
|
||
|
return;
|
||
|
end
|
||
|
|
||
|
start = 1;
|
||
|
if nargin>4 && rem(nargin-4,2)==1
|
||
|
c = varargin{1};
|
||
|
start = 2;
|
||
|
elseif nargin<3
|
||
|
error(id('NotEnoughInputs'),'Not enough input arguments');
|
||
|
else
|
||
|
c = z;
|
||
|
end
|
||
|
|
||
|
if ischar(get(ax,'color')),
|
||
|
fc = get(gcf,'Color');
|
||
|
else
|
||
|
fc = get(ax,'color');
|
||
|
end
|
||
|
|
||
|
h = patch('faces',quad,'vertices',[x(:) y(:) z(:)],'facevertexcdata',c(:),...
|
||
|
'facecolor',fc,'edgecolor',get(ax,'defaultsurfacefacecolor'),...
|
||
|
'facelighting', 'none', 'edgelighting', 'flat',...
|
||
|
'parent',ax,...
|
||
|
varargin{start:end});
|
||
|
if ~ishold(ax), view(ax,3), grid(ax,'on'), end
|
||
|
if nargout == 1, hh = h; end
|
||
|
|
||
|
function str = id(str)
|
||
|
str = ['MATLAB:quadmesh:' str];
|
||
|
|
||
|
return
|
||
|
|
||
|
% % Example: plot quadmesh
|
||
|
% close all, clear all, clc
|
||
|
%
|
||
|
% x = [0 1 2 2 1 1 0 0];
|
||
|
% y = [0 0 0 1 1 2 2 1];
|
||
|
% for i = 1 : length(x)
|
||
|
% text(x(i)+0.1,y(i)+0.1,sprintf('%d',i))
|
||
|
% hold on
|
||
|
% end
|
||
|
% quad = [1 2 5 8;
|
||
|
% 2 3 4 5;
|
||
|
% 8 5 6 7];
|
||
|
%
|
||
|
% plot(x,y,'k.-')
|
||
|
% axis off
|
||
|
%
|
||
|
% z = sin(pi*x).*cos(pi*y);
|
||
|
% c = z;
|
||
|
% figure
|
||
|
%
|
||
|
% ax=newplot;
|
||
|
% fc = get(gcf,'Color');
|
||
|
% h = patch('faces',quad,'vertices',[x(:) y(:) z(:)],'facevertexcdata',c(:),...
|
||
|
% 'facecolor',fc,'edgecolor',get(ax,'defaultsurfacefacecolor'),...
|
||
|
% 'facelighting', 'none', 'edgelighting', 'flat',...
|
||
|
% 'parent',ax);
|