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

조회 수: 31 (최근 30일)
Luca M
Luca M 2021년 1월 23일
답변: Luca M 2021년 1월 23일
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
Luca M 2021년 1월 23일
T = triangulation(polyshape(points));
triplot(T)

추가 답변 (1개)

Bruno Luong
Bruno Luong 2021년 1월 23일
I recommednd this Mesh2D FEX
  댓글 수: 1
Luca M
Luca M 2021년 1월 23일
Thank you, but I found out a very simple solution. Using a polyshape object:
T = triangulation(polyshape(points));
triplot(T)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Bounding Regions에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by