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

20 Ansichten (letzte 30 Tage)
Luca M
Luca M am 23 Jan. 2021
Beantwortet: Luca M am 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.

Akzeptierte Antwort

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

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Bounding Regions finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by