How to triangulate a non-convex ordered set of points?

31 visualizaciones (últimos 30 días)
Luca M
Luca M el 23 de En. de 2021
Respondida: Luca M el 23 de En. de 2021
I have a polygon defined by this anti-clockwise ordered set of points
points = [0 0; 1 0; 0.5 0.5; 1 1; 0 1];
patch(points(:, 1), points(:, 2))
I'd like to have any triangulation of this non convex polygon available. I know that delaunayTriangulation is only for convex-hulls.
I need something that can be automated for an arbitray (connected) non-convex or convex polygon (always ordered anti-clockwise). I know that alphaShape can be used somehow for this, but from the documentation I have no idea how to automate the creation of the correct non-convex polygon using an alphaShape.
The alternative I have is computing the constrained (else I could create holes) delaunay triangulation and then removing manually the triangles whose baricenter is outside the polygon (if there is a way to check), but I hope there is a better way for this.
Thanks for tips.

Respuesta aceptada

Luca M
Luca M el 23 de En. de 2021
T = triangulation(polyshape(points));
triplot(T)

Más respuestas (1)

Bruno Luong
Bruno Luong el 23 de En. de 2021
I recommednd this Mesh2D FEX
  1 comentario
Luca M
Luca M el 23 de En. de 2021
Thank you, but I found out a very simple solution. Using a polyshape object:
T = triangulation(polyshape(points));
triplot(T)

Iniciar sesión para comentar.

Categorías

Más información sobre Bounding Regions 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!

Translated by