Pergunta

Eu tenho um polígono com vértices V e número n de aberturas. Como posso criar uma malha usando triangulação de Delaunay para este polígono no MATLAB?

Eu sei que eu posso usar o delaunay função, mas eu não sei como a entrada da abertura.

Foi útil?

Solução

Nota: Novas versões do MATLAB recomendável usar o classe delaunayTriangulation e seus métodos associados. A solução abaixo é válido para versões mais antigas, e deve ser fácil de se adaptar à nova classe.


Você pode usar a função DelaunayTri para criar uma triangulação Delaunay com as arestas constrangidos para incluir o limite do polígono e os bordos das aberturas. Isto irá criar uma triangulação que inclui as aberturas, para que você possa, em seguida, selecionar apenas os triângulos que estão "dentro" da região limitada (ou seja, no polígono, mas não nas aberturas) usando a função inOutStatus .

Aqui está um exemplo de um quadrado com um buraco quadrado:

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]);

E aqui está o enredo criado pelo código acima:

enter descrição da imagem aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top