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

35 views (last 30 days)
Luca M on 23 Jan 2021
Answered: Luca M on 23 Jan 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.

Luca M on 23 Jan 2021
T = triangulation(polyshape(points));
triplot(T)

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