将plot3d放在matlab根目录下,然后在窗口处输入椭球的一般方程就行了。注意要把等式右边的移过来,让右边为0.
椭球和平面
源代码:
function plot3d(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('plot3d: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('plot3d:Arguments',...
'At least "fun" argument must be given');
case 1
f = varargin{1};
dom = [-2*pi, 2*pi]; % 定义域: -2*pi
< xi < 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 = 'blue';
elseif isa(varargin{2},'double') &&
length(varargin{2})==1
n = varargin{2};
dom = [-2*pi, 2*pi];
color = 'blue';
elseif isa(varargin{2},'char')