MATLAB Answers

How to create volume out of surfaces?

6 ビュー (過去 30 日間)
Teerapong Poltue
Teerapong Poltue 2021 年 6 月 7 日
コメント済み: darova 2021 年 6 月 9 日
I got these two surfaces from isosurface plot, thus I have all the coordinates of these surfaces. I would like to fill in between the two surface to create a 3d solid part. How can I do that?

回答 (1 件)

darova
darova 2021 年 6 月 7 日
Your object looks symmetrical. Try manually to create surface
p1 = isosurface(...);
p2 = isosurface(...);
v1 = p1.vertices;
v2 = p2.vertices;
ix1 = v1(:,3) > (max(v1(:,3))-0.05); % find z coord of boundary
ix2 = v2(:,3) > (max(v2(:,3))-0.05); % find z coord of boundary
[t1,r1] = cart2pol(v1(:,1),v1(:,2)); % extract data first contour
[t2,r2] = cart2pol(v2(:,1),v2(:,2)); % extract data second contour
ind1 = sort(t1); % order points counter clockwise
ind2 = sort(t2); % order points counter clockwise
% data can be of different size. Interpolate data to make the same size
r22 = interp1(t2,r2,t1); % make two contours same size as second one
x1 = v1(:,1);
y1 = v1(:,2);
z1 = v1(:,3);
[x2,y2] = pol2cart(t1,r22); % second contour
z2 = z1;
% create data for surface
X = [x1(:) x2(:)];
Y = [y1(:) y2(:)];
Z = [z1(:) z2(:)];
surf(X,Y,Z)
  6 件のコメント
darova
darova 2021 年 6 月 9 日
Maybe look into alphaShape

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

Community Treasure Hunt

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

Start Hunting!

Translated by