MATLAB Answers

How to show a deformation of a sphere

6 views (last 30 days)
I want to show a function that take a sphere with radius 1 as input and that gives in output an ellipsoid with axes always lower then 1.
tiledlayout(1,2);
[X, Y, Z] = ellipsoid(0,0,0,1,1,1,40);;
surf(nexttile,X,Y,Z);
axis equal;
title('Before')
mesh(nexttile,X/2,Y/2,Z/2);
axis equal
title('Then')
The problem with this code is that, instead of seeing a deformation of the sphere I get an adaptation of the axis. I'd like to fix the axes to be unitary for both the subfigures.

  2 Comments

darova
darova on 18 Jun 2020
You mean this?
[X, Y, Z] = sphere(40);
surf(X,Y,Z,'facecolor','none');
surface(X/2,Y/2,Z/2);
Daniele Cuomo
Daniele Cuomo on 18 Jun 2020
Yes! But in two different subplots.

Sign in to comment.

Accepted Answer

Bjorn Gustavsson
Bjorn Gustavsson on 18 Jun 2020
Keep track of the x, y, and z-lims or the axis-limits. Something like this:
tiledlayout(1,2);
[X, Y, Z] = ellipsoid(0,0,0,1,1,1,40);;
surf(nexttile,X,Y,Z);
axis equal;
ax1 = axis;
title('Before')
mesh(nexttile,X/2,Y/2,Z/2);
axis equal
title('Then')
axis(ax1)
You might have to do the same for the viewing-angles too, but the same procedure applies.
HTH

More Answers (0)