Plotting the iso-surface in a specific range of values

38 views (last 30 days)
hamed
hamed on 23 Feb 2021
Commented: hamed on 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

Accepted Answer

José M. Requena Plens
José M. Requena Plens on 15 Mar 2021
Edited: José M. Requena Plens on 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 Comments

Sign in to comment.

More Answers (1)

darova
darova on 23 Feb 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!