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

35 views (last 30 days)
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.

Accepted Answer

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

More Answers (1)

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

Sign in to comment.


Find more on Bounding Regions in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!