2008-10-23 16 views
5

Tengo un campo escalar implícito definido en 2D, para cada punto en 2D puedo hacer que calcule un valor escalar exacto, pero es un cálculo algo complejo.
Me gustaría dibujar una línea iso de esa superficie, digamos la línea del valor '0'. La función en sí es continua, pero la iso-línea '0' puede tener múltiples instancias continuas y no se garantiza que todas estén conectadas.
Calcular el valor de cada píxel no es una opción porque tomaría demasiado tiempo, en el orden de unos pocos segundos, y debe ser lo más real posible.Dibujando una línea iso de un campo escalar implícito 2D

Lo que estoy usando actualmente es una división recursiva del espacio que se puede considerar como una especie de árbol cuádruple. Tomo una muestra inicial, muy burda del espacio y si encuentro un cuadrado que contiene una transición de valores positivos a negativos, lo divido recursivamente en 4 cuadrados más pequeños y los compruebo nuevamente, deteniéndome en el nivel de píxel. La transición positivo-negativo se detecta al muestrear un sqaure en sus 4 esquinas. Esto funciona bastante bien, excepto cuando no lo hace. Las líneas iso que se dibujan a veces se cortan porque la detección de transición falla para las transiciones que ocurren en un área pequeña de un borde y que no cruzan una esquina de un cuadrado.

¿Hay una mejor manera de hacer un dibujo iso-line en esta configuración?

Respuesta

6

He tenido mucho éxito con los algoritmos descritos aquí http://web.archive.org/web/20140718130446/http://members.bellatlantic.net/~vze2vrva/thesis.html que discuten el contorno adaptable (similar al que usted describe), y también algunos otros problemas con el trazado de curvas de nivel en general.

No hay una manera general de garantizar la búsqueda de todos los contornos de una función, sin mirar cada píxel. Podría haber un contorno cerrado muy pequeño, donde una región solo tiene aproximadamente el tamaño de un píxel donde la función es positiva, en una región donde la función es generalmente negativa. A menos que muestre lo suficiente como para colocar una muestra dentro de la región positiva, no hay una forma general de saber que está allí.

Si su función es lo suficientemente uniforme, puede adivinar dónde se encuentran dichos contornos cerrados pequeños, porque el módulo de la función se vuelve pequeño en una región que los rodea. El muestreo podría refinarse solo en estas regiones.

+0

El enlace a la tesis está muerto (404). – IAbstract

+1

Enlace redirigido a archive.org –

Cuestiones relacionadas