MATLAB Answers

How to generating surface without plotting?

15 views (last 30 days)
Daniel Chou
Daniel Chou on 30 Dec 2020
Commented: Daniel Chou on 30 Dec 2020
I wonder if it's possible to create a surface by ''surf'' without plotting?
That means, I only want the surface data, but I don't want the figure.
Anyone has idea?
Thanks a lot and happy new year :)
  2 Comments
Daniel Chou
Daniel Chou on 30 Dec 2020
Sure!
For instance,
I would like to generate a surface of ellipsoid by
[x, y, z] = ellipsoid(3,3,5,1,0.5,0.5)
s=surf(x,y,z)
direction = [rand() rand() rand()];
rotate(s,direction,rand()*360)
Then use this surface to do further things
The plot of ellipsoid will be generated when I use ''surf'' command.
I just wanna know if it's possible to purely generate surface by surf without plotting it!
Thanks a lot!

Sign in to comment.

Accepted Answer

Ameer Hamza
Ameer Hamza on 30 Dec 2020
Since it is a graphical object, you cannot create it without plotting somewhere. However, you can make the figure invisible so that it does not appear on screen
[x, y, z] = ellipsoid(3,3,5,1,0.5,0.5)
f = figure('Visible', 'off');
ax = axes(f);
s = surf(ax,x,y,z)
direction = [rand() rand() rand()];
rotate(s,direction,rand()*360)
  1 Comment
Daniel Chou
Daniel Chou on 30 Dec 2020
I'll try this later.
Thanks for your patience and replying
Happy new year as well :)
Sincerely
Daniel

Sign in to comment.

More Answers (1)

Cris LaPierre
Cris LaPierre on 30 Dec 2020
If I look at the first example on the surf documentation page, it first creates X, Y and Z, then uses surf to plot/create the surface. So is what you want X,Y and Z?
% Example modified to create surface data but not the surface
[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
% surf(X,Y,Z)
  1 Comment
Daniel Chou
Daniel Chou on 30 Dec 2020
Thanks for response
Actually I'm currently design a code to generate the ellipsoid inclusions in given space.
I try the build-in function of AlphaShape to detect overlapping, if the current ellipsoids are too close to each other, the current ellipsoid will be replaced by a new ellipsoid.
However, since I use the ''surf'' function to convert the ellipsoid [x,y,z] in to surface, the plot (from surf command) will be retained.
The output figure will look like a disaster.
Sincerely and happy new year!
Daniel

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!