The "union" function for polyshapes performs an incorrect consolidation of adjacent polyshapes when presented as a vector
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Matt J
el 7 de Mayo de 2024
Comentada: Meilin
el 10 de Jul. de 2025
I have a polyshape vector "pv" consisting of 4 adjacent triangles:
load tstcase_pv
plot(pv)

Why is it that when the polyshape vector elements are ordered one way, the "union" operation successfully consolidates them, whereas in the reverse order, it does not?
load tstcase_pv
pv1=pv([4,1,2,3]);
plot(union(pv1))

load tstcase_pv
pv1=pv([4,1,2,3]);
plot(union(pv1))

As an additional observation, I find that if the union is performed incrementally on two of the "pv(i)" at a time, using a for-loop, the problem does not manifest. Moreover, this is irrespective of the loop order.
load tstcase_pv
u=polyshape();
for i=randperm(4);
u=union(u,pv(i));
end
plot(u)

1 comentario
Respuesta aceptada
Matt J
el 10 de Mayo de 2024
Editada: MathWorks Support Team
el 4 de Jun. de 2024
1 comentario
Meilin
el 10 de Jul. de 2025
To follow up on this thread, as of R2025a the polyshape union function should produce the same result for the original order (4, 1, 2, 3) and the reverse (3, 2, 1, 4 - which I believe is what the third code snippet in the original question was going for?):
load tstcase_pv
pv1=pv([4,1,2,3]);
plot(union(pv1))
pv2=pv([3,2,1,4]);
plot(union(pv2))
Más respuestas (1)
Walter Roberson
el 8 de Mayo de 2024
polyshapes contains oriented polygons. A polyshape with its vertices backwards is considered to be reverse direction.
This is important because multiple polyshapes together can describe "holes".
If you have two polyshapes with one insided the other, and the polyshapes are the same orientation, then the union of the two is the outer one. If the polyshapes are different orientation, then the union of the two is the area between the outer shape and the inner shape -- the inner shape will be a hole in the outer shape.
1 comentario
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!






