plot a 3d function (with three independent variable)

 Risposta accettata

The isosurface function would likely be most apprroppriate.
See the documentation section on Volume Visualization for more options.

6 Commenti

hi, thanks for your answer but i want it with shadows like this picture i tried this code but it wasn't like my picture
My pleasure!
I have no idea what you intend by ‘shadows’, since all that is necessary to produce them is to create a lighting effect.
Example —
N = 50;
xv = linspace(-10,10, N);
yv = linspace(-10,10, N);
zv = linspace(-10,10, N);
vfcn = @(x,y,z) 4*x.^2 + 9*y.^2 + 4*z.^2;
[Xm,Ym,Zm] = meshgrid(xv,yv,zv);
Vm = vfcn(Xm,Ym,Zm);
figure
p = patch(isosurface(Xm, Ym, Zm, Vm, 36));
isonormals(Xm,Ym,Zm,Vm,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';
daspect([1 1 1])
view(3);
% axis tight
axis('equal')
camlight
lighting gouraud
grid on
hold on
plot3([-5 5], [0 0], [0 0], '-k')
plot3([0 0], [-5 5], [0 0], '-k')
plot3([0 0], [0 0], [-5 5], '-k')
hold off
text(-6, 0, 0, '$x$', 'Interpreter','latex', 'FontSize',20)
text(0, -6, 0, '$y$', 'Interpreter','latex', 'FontSize',20)
text(0, 0, 6, '$z$', 'Interpreter','latex', 'FontSize',20)
This is partially copied from the isosurface documentation.
thank you so much and how can i unfill the graph like picture?
My pleasure!
If by ‘unfill’ you mean to see inside it, add this assignment —
p.FaceAlpha = 0.75; % See Inside The Volume!
so the revised code is now —
N = 50;
xv = linspace(-10,10, N);
yv = linspace(-10,10, N);
zv = linspace(-10,10, N);
vfcn = @(x,y,z) 4*x.^2 + 9*y.^2 + 4*z.^2;
[Xm,Ym,Zm] = meshgrid(xv,yv,zv);
Vm = vfcn(Xm,Ym,Zm);
figure
p = patch(isosurface(Xm, Ym, Zm, Vm, 36));
isonormals(Xm,Ym,Zm,Vm,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';
p.FaceAlpha = 0.75; % See Inside The Volume!
daspect([1 1 1])
view(3);
axis tight
camlight
lighting gouraud
grid on
hold on
plot3([-5 5], [0 0], [0 0], '-k')
plot3([0 0], [-5 5], [0 0], '-k')
plot3([0 0], [0 0], [-5 5], '-k')
hold off
text(-6, 0, 0, '$x$', 'Interpreter','latex', 'FontSize',20, 'Horiz','center', 'Vert','middle')
text(0, -6, 0, '$y$', 'Interpreter','latex', 'FontSize',20, 'Horiz','center', 'Vert','middle')
text(0, 0, 6, '$z$', 'Interpreter','latex', 'FontSize',20, 'Horiz','center', 'Vert','middle')
Change that value to something between 0 (fully transparent) and 1 (not at all transparent) to get the result you want.
.
As always, my pleasure!

Accedi per commentare.

Più risposte (0)

Prodotti

Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by