Delete triangulations outside the outline polygon and z value manipulation

5 ビュー (過去 30 日間)
zzzzz Sap
zzzzz Sap 2011 年 4 月 4 日
コメント済み: Yonni f 2022 年 10 月 26 日
I have an outline polygon traced using impoly, over an image of an outline. When I triangulate it using delaunay command, triangulations extend outside the polygon. how to delete these unwanted triangles, and then manipulate the z values of the polygon, to change its orientation? I'm using Matlab R2008a

回答 (1 件)

Paul Rötzer
Paul Rötzer 2022 年 10 月 17 日
I know the answer comes very late but i struggled with the same problem today.
For newer version of matlab the following should work:
% P contains the points on outline of polyshape
polyin = polyshape(P);
EdgeConstraint = [(1:length(P))' [(2:length(P))'; 1]];
DT = delaunayTriangulation(P, EdgeConstraint)
%% remove outside triangles
C = incenter(DT);
TF = isinterior(polyin, C);
InsideTriangles = DT.ConnectivityList(TF, :);
  1 件のコメント
Yonni f
Yonni f 2022 年 10 月 26 日
Amazing. I was just strugging on the same thing and I found your response to a decade old post.
To ellaborate a bit more on Paul's answer, I edited the triangulation by calling a new structure called dts and then removing the connections outside the border:
dts = struct('Points', DT.Points, 'ConnectivityList', DT.ConnectivityList);
dts.ConnectivityList(~TF, :) = [];
x=triangulation(dts.ConnectivityList, dts.Points);
triplot(x);

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDelaunay Triangulation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by