MATLAB Answers

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

22 views (last 30 days)
Luca M
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.

  0 Comments

Sign in to comment.

Accepted Answer

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

  0 Comments

Sign in to comment.

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));
triplot(T)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!