曲嘉
开通时间:..
最后更新时间:..
应变率相关强度准则计算程序MATLAB源代码(面向科研人员和学生免费开放)
function h = ezimplot3(varargin)
if ishandle(varargin{1})
cax = varargin{1};
axes(cax);
args{:} = varargin{2:end};
else
args = varargin;
end
[fun domain n color] = argcheck(args{:});
xm = linspace(domain(1),domain(2),n);
ym = linspace(domain(3),domain(4),n);
zm = linspace(domain(5),domain(6),n);
[x,y,z] = meshgrid(xm,ym,zm);
[f_handle f_text] = fix_fun(fun);
try
fvalues = f_handle(x,y,z);
catch ME
error('Ezimplot3:Functions', 'FUN must have no more than 3 arguments');
end
h = patch(isosurface(x,y,z,fvalues,0));
isonormals(x,y,z,fvalues,h)
set(h,'FaceColor',color,'EdgeColor','none');
xlabel('x');ylabel('y');zlabel('z');
alpha(0.7)
grid on; view([1,1,1]); axis equal; camlight; lighting gouraud
title([f_text,' = 0']);
function [f dom n color] = argcheck(varargin)
switch nargin
case 0
error('Ezimplot3:Arguments',...
'At least "fun" argument must be given');
case 1
f = varargin{1};
dom = [-2*pi, 2*pi];
n = 60;
color = 'red';
case 2
f = varargin{1};
if isa(varargin{2},'double') && length(varargin{2})>1
dom = varargin{2};
n = 60;
color = 'red';
elseif isa(varargin{2},'double') && length(varargin{2})==1
n = varargin{2};
dom = [-2*pi, 2*pi];
color = 'red';
elseif isa(varargin{2},'char')
dom = [-2*pi, 2*pi];
n = 60;
color = varargin{2};
end
case 3
f = varargin{1};
dom = varargin{2};
n = varargin{3};
color = 'red';
case 4
f = varargin{1};
dom = varargin{2};
n = varargin{3};
color = varargin{4};
otherwise
warning('Ezimplot3:Arguments', ...
'Attempt will be made only with the 4 first arguments');
f = varargin{1};
dom = varargin{2};
n = varargin{3};
color = varargin{4};
end
if length(dom) == 2
dom = repmat(dom,1,3);
elseif length(dom) ~= 6
error('Ezimplot3:Arguments',...
'Input argument "domain" must be a row vector of size 2 or size 6');
end
function [f_hand f_text] = fix_fun(fun)
types = {'char','sym','function_handle','inline'};
type = '';
for i=1:size(types,2)
if isa(fun,types{i})
type = types{i};
break;
end
end
switch type