# how to fill the interior of a closed surface?

19 views (last 30 days)
M.S. Khan on 5 Feb 2021
Commented: Star Strider on 7 Feb 2021
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 on 5 Feb 2021
Edited: Star Strider on 5 Feb 2021
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.
Star Strider on 7 Feb 2021
As always, my pleasure!

David Hill on 5 Feb 2021
Edited: David Hill on 5 Feb 2021
pgon = polyshape([0 0 1 3], [0 3 3 0]);
a=plot(pgon);
a.FaceColor=[0 1 0];
M.S. Khan on 5 Feb 2021
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.

### Categories

Find more on Elementary Polygons 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!