How to create a triangulation from a list of edges and list of nodes?
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Dominik Mattioli
il 29 Lug 2018
Risposto: Johannes Korsawe
il 14 Ott 2022
I'm beginning with a triangulation so that I know this graph is actually composed of non-intersecting edges that define a set of triangles.
% Start with a random triangulation, get edge list.
dt = delaunayTriangulation(rand(101,2)); % Keep it small for now.
edges = unique(sort(... % Unique mx2 list of
[dt.ConnectivityList(:,1:2);... % all edges in dt.
dt.ConnectivityList(:,2:3);...
dt.ConnectivityList(:,[3 1])],...
2),'rows');
figure; triplot(dt);
% Convert dt to graph, plot.
g = graph(edges(:,1),edges(:,2));
figure; g.plot;
% We know that g.edges describe dt, how can we reconstruct it?
0 Commenti
Risposta accettata
Johannes Korsawe
il 14 Ott 2022
allCyclesWithLengthThree = allcycles(g, 'MaxCycleLength', 3);
connectivityList = cell2mat(allCyclesWithLengthThree);
0 Commenti
Più risposte (1)
Christine Tobler
il 9 Ago 2018
The problem is that a graph is a more general data structure than a Delaunay triangulation. Many graphs do not represent a triangulation at all, so there is not direct way of doing this.
If you also save the locations of each point in the original triangulation, you could write an algorithm that goes through each point in the graph and finds all the triangles it's a part of.
Could you tell me why you want to retrieve the triangulation from the graph?
1 Commento
Vedere anche
Categorie
Scopri di più su Delaunay Triangulation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!