# how to fill the interior of a closed surface?

조회 수: 26(최근 30일)
M.S. Khan 2021년 2월 5일
댓글: Star Strider 2021년 2월 7일
hi dear community members,
please guide me, i have a closed boundary surface. i want to fill the interior.
i am using for loop but i could not succeed.
regards

댓글을 달려면 로그인하십시오.

### 채택된 답변

Star Strider 2021년 2월 5일
편집: Star Strider 2021년 2월 5일
Try this:
figure
[c,h] = contour(D, [1 1]*0.5);
Levels = h.LevelList;
idx = find(c(1,:) == Levels(1));
Len = c(2,idx);
for k = 1:numel(idx)
x{k} = c(1,idx+1:Len(k));
y{k} = c(2,idx+1:Len(k));
end
[b,v] = boundary(x{1}(:), y{1}(:)); % Introduced In R2014b
figure
fill(x{1}(b), y{1}(b), 'r')
title('Boundary')
figure
fill(x{1}, y{1}, 'g')
title('Filled Contour')
It uses the contour function to extract the outlines of the triangle, then first boundary (R2014b and later) to fill the triangle, and then a second one to fill the contour. Choose the one you want.
For figure(1): .
EDIT — (5 Feb 2021 at 03:06)
The ‘v’ output of boundary is the area it encloses. I assume it corresponds to pixels, however I cannot determine that. Nothing in the original Question mentioned anything about pixels. It might be possible to use ‘x{1}(b)’ and ‘y{1}(b)’ with the original data to outline tha area in the image. The ‘y’ axis direction in the image will be reversed from the plot direction.
##### 댓글 수: 8표시숨기기 이전 댓글 수: 7
Star Strider 2021년 2월 7일
As always, my pleasure!

댓글을 달려면 로그인하십시오.

### 추가 답변(1개)

David Hill 2021년 2월 5일
편집: David Hill 2021년 2월 5일
pgon = polyshape([0 0 1 3], [0 3 3 0]);
a=plot(pgon);
a.FaceColor=[0 1 0];
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
M.S. Khan 2021년 2월 5일
Dear David, i mean, using a.FaceColor=[0 1 0]; we got a colored polygon. can we count how many pixels were used in colored area.

댓글을 달려면 로그인하십시오.

### 범주

Find more on Contour Plots in Help Center and File Exchange

R2020a

### Community Treasure Hunt

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

Start Hunting!