Domanda

Ho un poligono con vertici V e il numero di aperture n. Come posso creare una mesh usando la triangolazione Delaunay per questo poligono in MATLAB?

So che posso utilizzare il Delaunay funzione, ma non so come inserire l'apertura.

È stato utile?

Soluzione

Nota: Le nuove versioni di MATLAB consiglia di utilizzare il class delaunayTriangulation e dei suoi metodi associati. La soluzione qui di seguito è valida per le versioni più vecchie, e dovrebbe essere facile per adattarsi alla nuova classe.


È possibile utilizzare la funzione DelaunayTri per creare una triangolazione Delaunay con i bordi vincolate per includere il confine del poligono ed i bordi delle aperture. Questo creerà una triangolazione che comprende le aperture, in modo da poter selezionare solo quei triangoli che sono "dentro" la regione limitata (vale a dire nel poligono, ma non nelle aperture) utilizzando la funzione di inOutStatus .

Ecco un esempio di un quadrato con un foro quadrato:

x = [0 1 2 3 3 3 3 2 1 0 0 0 1 2 2 1].';
y = [0 0 0 0 1 2 3 3 3 3 2 1 1 1 2 2].';
c = [(1:11).' (2:12).'; 12 1; (13:15).' (14:16).'; 16 13];  % Constrained edges
dt = DelaunayTri(x, y, c);   % Create constrained triangulation
isInside = inOutStatus(dt);  % Find triangles inside the constrained edges
tri = dt(isInside, :);       % Get end point indices of the inner triangles
triplot(tri, x, y);          % Plot the inner triangles
hold on;
plot(x(c(1:12, :)), y(c(1:12, :)), 'r', 'LineWidth', 2);    % Plot the outer edges
plot(x(c(13:16, :)), y(c(13:16, :)), 'r', 'LineWidth', 2);  % Plot the inner edges
axis equal;
axis([-0.5 3.5 -0.5 3.5]);

Ed ecco la trama creata dal codice di cui sopra:

entrare descrizione dell'immagine qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top