Если вы хотите построить неявную поверхность, например куб Рогатый, вы можете сделать что-то вроде следующего.
Идея состоит в том, чтобы вычислить все значения функции (даже если они не равны нулю), а затем создать isosurface
, который определит ваше равенство. В этом примере неявная функция равна нулю.
fun=@(x,y,z)(1-x.^8-3.*y.^8-2.*z.^8+5.*x.^4.*z.^2.*y.^2+3.*y.^4.*x.^2.*z.^2) ;
[X,Y,Z]=meshgrid(-2:0.1:2,-2:0.1:2,-2:0.1:2);
val=fun(X,Y,Z);
fv=isosurface(X,Y,Z,val,0);
p = patch(fv);
isonormals(X,Y,Z,val,p)
set(p,'FaceColor' , 'red');
set(p,'EdgeColor' , 'none');
daspect([1,1,1])
view(3); axis tight
camlight
lighting phong
axis off
Кроме того, существует Matlab File Exchange, называемый ezimplot3D , который, похоже, тоже выполняет эту работу, как предполагает @knedlsepp.