get mesh from surf function

8 vues (au cours des 30 derniers jours)
Albi
Albi le 3 Sep 2015
Commenté : Albi le 4 Sep 2015
Is there a way to get the mesh which the function "surf" produces? By that I mean I need the usual mesh format which is a list of vertices and a list of faces.

Réponse acceptée

Mike Garrity
Mike Garrity le 4 Sep 2015
Yes, the surf2patch command.
[x,y,z] = peaks(10);
h = surf(x,y,z);
[f,v,c] = surf2patch(h);
At this point:
  • v is a 100x3 array containing the 100 vertices
  • f is an 81x4 array containing indices into v for the 81 faces
  • c is an vector of the 100 data values which would be used for coloring the vertices
  1 commentaire
Albi
Albi le 4 Sep 2015
Exactly what I was looking for. Thank you.

Connectez-vous pour commenter.

Plus de réponses (1)

Adam
Adam le 3 Sep 2015
If you mean the X, Y and Z meshes that define the surface then the XData, YData and ZData properties of the surface object contain these and the CData contains the colour data for the ZData values.
  3 commentaires
Adam
Adam le 3 Sep 2015
I'm not too familiar with mesh definitions, but FaceNormals and VertexNormals seem to be the only other sets of data you can extract from a surface object but they are m-by-n-by-3 arrays.
Albi
Albi le 3 Sep 2015
Yeah, I checked the properties and found nothing I could use. Looking at the surf doc page, I saw that they briefly explain the algorithm behind the surf function. I could write it myself, but it would be nice to have it for free. Looks like surf can be used only for visualization purposes.

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by