Dados os valores em uma malha, qual algoritmo posso usar para construir níveis eficientemente definidos dos contornos?

9

Eu tenho uma malha, faces , arestas e vértices , e tenho uma lista de contornos predefinidos de conjunto de níveis.FEV

Que algoritmo posso usar para construir contornos da maneira mais eficiente?

insira a descrição da imagem aqui

Uma plotagem do contorno é mostrada acima. Linhas com a mesma cor têm o mesmo valor .z

Graviton
fonte
11
Por que o voto negativo?
Graviton
11
não tenho certeza, parece uma pergunta relevante para mim. Downvoter? Uma questão é que as isolinhas não parecem particularmente bem definidas para dados de malha. Você poderia dar um exemplo gráfico do problema que está tentando resolver?
Aron Ahmadia

Respostas:

4

Isso pode ser feito por um loop sobre cada elemento e, em seguida, para cada elemento, um loop pelas bordas. Em seguida, para cada aresta, determine a coordenada de um determinado contorno se ele cruzar a aresta, ou seja, verifique se o contorno assume um valor no intervalo medido pelos valores dos vértices. Se o contorno cruzar duas arestas, desenhe uma linha entre as coordenadas entre os pontos de cruzamento detectados nas arestas.

Fazer isso para todos os elementos criará os contornos. Também é uma opção para refinar uma malha mais fina por meio de interpolação em cada triângulo e, em seguida, usar triangulações delaunay da malha refinada e aplicar a rotina conforme descrito acima para obter uma resolução suficientemente fina.

Allan P. Engsig-Karup
fonte
O tempo de execução para isso é , onde é o número rosto e é o número de contorno, há de qualquer maneira para melhorar em tempo de execução deste algoritmo? O(Fn)Fn
Graviton
@Graviton: Eu doe não acho que você pode esperar para ser muito melhor do que escala linear com o tamanho do problema ...
Allan P. Engsig-Karup