![polyshape.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/237603/polyshape.png)
Attribute number to closed area
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Armin Mashhadi
el 9 de Sept. de 2019
Comentada: Armin Mashhadi
el 10 de Sept. de 2019
Hi,
I'm trying to calculate stable region automatically by Matlab. As shown in picture, Boundries are driven (as 2 vector of x,y) and split the plate into several closed areas.
Every closed area has a specific number and Somehow these numbers are related to each other.
I have to :
- Define very closed area
- Attribute an number (for example 2) for each Area
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/237597/image.jpeg)
at last The area with least number is The stable region.
I have coordinates of intersections (Red Points), I was thinking about using these points and "inpolygon" command to find a point within The area and attribute the number to that point instead of whole surface. But Vertex Points are not connected Respectively (e.g 3th, 4th and 8th are making an area) and that does not work for me.
Could you please help me out of this ?
0 comentarios
Respuesta aceptada
Bruno Luong
el 9 de Sept. de 2019
Editada: Bruno Luong
el 9 de Sept. de 2019
You might checkout POLYSHAPE, that can give you the regions
P = polyshape(rand(10,2));
R = regions(P);
close all
plot(R);
for k=1:length(R)
[x,y]=R(k).centroid;
text(x,y,num2str(k));
end
![polyshape.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/237603/polyshape.png)
3 comentarios
Bruno Luong
el 9 de Sept. de 2019
Editada: Bruno Luong
el 9 de Sept. de 2019
The white part is the complement of P: meaning the surounding rectangle substracted P. Checkout boolean operation of polyshape to get that complement.
Repeat the same process wuth the complement.
Box = polyshape([0 0;
1 0;
1 1;
0 1;
0 0]);
P = polyshape(rand(10,2));
Q = subtract(Box, P);
R1 = regions(P);
R2 = regions(Q);
R = [R1; R2];
close all
plot(R);
for k=1:length(R)
[x,y]=R(k).centroid;
text(x,y,num2str(k));
end
![Split.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/237662/Split.png)
Más respuestas (0)
Ver también
Categorías
Más información sobre Elementary Polygons en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!