Dados los valores en una malla, ¿qué algoritmo puedo usar para construir contornos de conjuntos de niveles de manera eficiente?

9

Tengo una malla, caras , aristas y vértices , y tengo una lista de contornos de niveles predefinidos.FEV

¿Qué algoritmo puedo usar para construir contornos de la manera más eficiente?

ingrese la descripción de la imagen aquí

Una gráfica del contorno se muestra arriba. Las líneas con el mismo color tienen el mismo valor .z

Graviton
fuente
1
¿Por qué el voto negativo?
Graviton
1
No estoy seguro, me parece una pregunta relevante. Downvoter? Un problema es que las isolinas no parecen particularmente bien definidas para los datos de malla. ¿Podría quizás dar un ejemplo gráfico del problema que está tratando de resolver?
Aron Ahmadia

Respuestas:

4

Se puede hacer mediante un bucle sobre cada elemento y luego para cada elemento un bucle sobre los bordes. Luego, para cada borde, determine la coordenada para un contorno dado si cruza el borde, es decir, verifique si el contorno toma un valor en el intervalo abarcado por los valores de los vértices. Si el contorno cruza dos bordes, dibuje una línea entre las coordenadas entre los puntos de cruce detectados en los bordes.

Hacer esto para todos los elementos creará los contornos. También es una opción para refinar a una malla más fina a través de la interpolación en cada triángulo y luego usar una triangulación delaunay de la malla refinada y luego aplicar la rutina como se describe anteriormente para lograr una resolución suficientemente fina.

Allan P. Engsig-Karup
fuente
El tiempo de ejecución para esto es , donde es el número de cara es el número de contorno, ¿hay alguna forma de mejorar el tiempo de ejecución de este algoritmo? O(Fnorte)Fnorte
Graviton
@ Graviton: No creo que pueda esperar ser mucho mejor que la escala lineal con el tamaño del problema ...
Allan P. Engsig-Karup