Plotting the iso-surface in a specific range of values

12 Ansichten (letzte 30 Tage)
hamed
hamed am 23 Feb. 2021
Kommentiert: hamed am 16 Mär. 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

Akzeptierte Antwort

José M. Requena Plens
José M. Requena Plens am 15 Mär. 2021
Bearbeitet: José M. Requena Plens am 15 Mär. 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 Kommentare
José M. Requena Plens
José M. Requena Plens am 15 Mär. 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 am 16 Mär. 2021
Thanks Jose.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

darova
darova am 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!

Translated by