Plotting the iso-surface in a specific range of values

44 ビュー (過去 30 日間)
hamed
hamed 2021 年 2 月 23 日
コメント済み: hamed 2021 年 3 月 16 日
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

採用された回答

José M. Requena Plens
José M. Requena Plens 2021 年 3 月 15 日
編集済み: José M. Requena Plens 2021 年 3 月 15 日
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 件のコメント
José M. Requena Plens
José M. Requena Plens 2021 年 3 月 15 日
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 2021 年 3 月 16 日
Thanks Jose.

サインインしてコメントする。

その他の回答 (1 件)

darova
darova 2021 年 2 月 23 日
Use for loop to create several value

カテゴリ

Help Center および File ExchangeLighting, Transparency, and Shading についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by