Plotting the iso-surface in a specific range of values

27 vues (au cours des 30 derniers jours)
hamed
hamed le 23 Fév 2021
Commenté : hamed le 16 Mar 2021
Hi,
I have a 3D matrix and I want to show the isosurface for a range of values, such as the values greater than 0.2, not for a single value.
Could anybody help me to revise my code?
data = smooth3(porosity_median,'box',5);
p1 = patch(isosurface(data, 0.1 ), 'FaceColor','red','EdgeColor','none');
view(3); axis vis3d tight
camlight; lighting phong

Réponse acceptée

José M. Requena Plens
José M. Requena Plens le 15 Mar 2021
Modifié(e) : José M. Requena Plens le 15 Mar 2021
You need ISOCAPS with 'enclose' option.
Using yor code.
To plot values greater than 0.1:
data = smooth3(porosity_median,'box',5);
p1 = patch(isosurface(data, 0.1 ), 'FaceColor','red','EdgeColor','none');
p2 = patch(isocaps(data,0.1,'enclose','above'),'FaceColor','red','EdgeColor','none');
view(3); axis vis3d tight
camlight; lighting phong
To plot values lower than 0.1:
data = smooth3(porosity_median,'box',5);
p1 = patch(isosurface(data, 0.1 ), 'FaceColor','red','EdgeColor','none');
p2 = patch(isocaps(data,0.1,'enclose','below'),'FaceColor','red','EdgeColor','none');
view(3); axis vis3d tight
camlight; lighting phong
And I recommend that you use the ISONORMALS to better graphics.
isonormals(data,p1)
  5 commentaires
José M. Requena Plens
José M. Requena Plens le 15 Mar 2021
The value you want to represent must be defined in both patches.
...
p1 = patch(isosurface(data, 0.3 ), 'FaceColor','red','EdgeColor','none');
...
p2 = patch(isocaps(data,0.3,'enclose','above'),'FaceColor','red','EdgeColor','none');
...
hamed
hamed le 16 Mar 2021
Thanks Jose.

Connectez-vous pour commenter.

Plus de réponses (1)

darova
darova le 23 Fév 2021
Use for loop to create several value

Community Treasure Hunt

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

Start Hunting!

Translated by