stringtranslate.com

Eliminación de líneas ocultas

Una imagen con estructura de alambre mediante eliminación de líneas ocultas

En los gráficos por computadora en 3D , los objetos sólidos generalmente se modelan mediante poliedros . Una cara de un poliedro es un polígono plano delimitado por segmentos de recta, llamados aristas . Las superficies curvas generalmente se aproximan mediante una malla poligonal . Los programas informáticos para dibujos lineales de objetos opacos deben poder decidir qué bordes o qué partes de los bordes están ocultos por un objeto mismo o por otros objetos, de modo que esos bordes puedan recortarse durante el renderizado . Este problema se conoce como eliminación de líneas ocultas .

La primera solución conocida al problema de las líneas ocultas fue ideada por LG Roberts [1] en 1963. Sin embargo, restringe severamente el modelo: requiere que todos los objetos sean convexos . Ruth A. Weiss de Bell Labs documentó su solución de 1964 a este problema en un artículo de 1965. [2] En 1966, Ivan E. Sutherland enumeró 10 problemas no resueltos en gráficos por computadora. [3] El problema número siete fue la "eliminación de líneas ocultas" . En términos de complejidad computacional , este problema fue resuelto por Frank Devai en 1986. [4]

Los modelos, por ejemplo en el diseño asistido por ordenador , pueden tener miles o millones de aristas. Por lo tanto, es crucial un enfoque de complejidad computacional que exprese los requisitos de recursos (como el tiempo y la memoria) en función del tamaño del problema. Los requisitos de tiempo son particularmente importantes en los sistemas interactivos.

Los tamaños del problema para la eliminación de líneas ocultas son el número total n de los bordes del modelo y el número total v de los segmentos visibles de los bordes. La visibilidad puede cambiar en los puntos de intersección de las imágenes de los bordes. Sea k el número total de puntos de intersección de las imágenes de los bordes. Tanto k = Θ( n 2 ) como v = Θ( n 2 ) en el peor de los casos, [4] pero normalmente v < k .

Algoritmos

Los algoritmos de líneas ocultas publicados antes de 1984 [5] [6] [7] [8] dividen los bordes en segmentos de línea por los puntos de intersección de sus imágenes y luego prueban la visibilidad de cada segmento frente a cada cara del modelo. Suponiendo un modelo de una colección de poliedros con el límite de cada uno topológicamente equivalente a una esfera y con caras topológicamente equivalentes a discos, según la fórmula de Euler, hay Θ( n ) caras. Probar Θ( n 2 ) segmentos de línea contra Θ( n ) caras lleva Θ( n 3 ) tiempo en el peor de los casos. [4] El algoritmo de Appel [5] también es inestable, porque un error en la visibilidad se propagará a los puntos finales del segmento posterior. [9]

Ottmann y Widmayer [10] y Ottmann, Widmayer y Wood [11] propusieron algoritmos de línea oculta en tiempo O (( n + k ) log 2 n ). Luego Nurmi mejoró [12] el tiempo de ejecución a O (( n + k ) log  n ). Estos algoritmos toman Θ( n 2  log 2 n ), respectivamente Θ( n 2  log  n ) tiempo en el peor de los casos, pero si k es menor que cuadrático, pueden ser más rápidos en la práctica.

Cualquier algoritmo de líneas ocultas tiene que determinar la unión de Θ( n ) intervalos ocultos en n aristas en el peor de los casos. Como Ω( n  log  n ) es un límite inferior para determinar la unión de n intervalos, [13] parece que lo mejor que se puede esperar lograr es Θ( n 2  log  n ) en el peor de los casos y, por lo tanto, el algoritmo de Nurmi es óptimo.

Sin embargo, el factor log  n fue eliminado por Devai, [4] quien planteó el problema abierto de si existía el mismo límite superior óptimo O ( n 2 ) para la eliminación de la superficie oculta. Este problema fue resuelto por McKenna en 1987. [14]

Los algoritmos sensibles a intersecciones [10] [11] [12] se conocen principalmente en la literatura de geometría computacional. Los límites superiores cuadráticos también son apreciados por la literatura sobre gráficos por computadora: Ghali señala [15] que los algoritmos de Devai y McKenna "representan hitos en los algoritmos de visibilidad" , rompiendo una barrera teórica de O ( n 2  log  n ) a O ( n 2 ) para procesar una escena de n aristas.

El otro problema abierto, planteado por Devai [4] , de si existe un algoritmo de línea oculta en tiempo O ( n  log  n + v ), donde v , como se señaló anteriormente, es el número de segmentos visibles, aún no está resuelto en el momento de escribir.

Algoritmos paralelos

En 1988, Devai propuso [16] un algoritmo paralelo de tiempo O (log  n ) que utiliza n 2 procesadores para el problema de líneas ocultas bajo el modelo de cálculo de máquina de acceso aleatorio paralelo (PRAM) de lectura concurrente y escritura exclusiva (CREW). Como el producto del número de procesador y el tiempo de ejecución es asintóticamente mayor que Θ ( n 2 ), la complejidad secuencial del problema, el algoritmo no es óptimo para el trabajo, pero demuestra que el problema de línea oculta está en la clase de complejidad. NC , es decir, se puede resolver en tiempo polilogarítmico utilizando un número polinómico de procesadores.

Se pueden utilizar algoritmos de superficie oculta para eliminar líneas ocultas, pero no al revés. Reif y Sen [17] propusieron un algoritmo de tiempo O (log 4 n ) para el problema de la superficie oculta, utilizando procesadores O (( n + v )/log  n ) CREW PRAM para un modelo restringido de terrenos poliédricos, donde v es el tamaño de salida.

En 2011, Devai publicó [18] una superficie oculta en tiempo O (log  n ) y un algoritmo de línea oculta en tiempo O (log  n ) más simple. El algoritmo de superficie oculta, que utiliza n 2 /log  n procesadores CREW PRAM, es óptimo para el trabajo.

El algoritmo de línea oculta utiliza n 2 procesadores PRAM exclusivos de lectura y escritura exclusiva (EREW). El modelo EREW es la variante de PRAM más cercana a las máquinas reales. El algoritmo de línea oculta funciona O ( n 2  log  n ), que es el límite superior de los mejores algoritmos secuenciales utilizados en la práctica.

Cook, Dwork y Reischuk dieron un límite inferior Ω(log  n ) para encontrar el máximo de n enteros que permiten infinitos procesadores de cualquier PRAM sin escrituras simultáneas. [19] Encontrar el máximo de n enteros es reducible en tiempo constante al problema de líneas ocultas utilizando n procesadores. Por lo tanto, el algoritmo de línea oculta es óptimo en el tiempo. [18]

Ver también

Referencias

  1. ^ LG Roberts. Percepción mecánica de sólidos tridimensionales . Tesis doctoral, Instituto de Tecnología de Massachusetts, 1963.
  2. ^ Ruth A. Weiss BE VISION, un paquete de programas IBM 7090 FORTRAN para dibujar vistas ortográficas de combinaciones de superficies planas y cuádricas
  3. ^ IE Sutherland. Diez problemas sin resolver en gráficos por computadora. Datamación , 12(5):22–27, 1966.
  4. ^ abcde F. Devai. Límites cuadráticos para la eliminación de líneas ocultas. En Proc. 2do Simposio Anual. sobre geometría computacional , SCG '86, págs. 269–275, Nueva York, NY, EE. UU., 1986.
  5. ^ ab A. Appel. La noción de invisibilidad cuantitativa y la representación mecánica de sólidos. En Proc. 22ª Conferencia Nacional , ACM '67, págs. 387–393, Nueva York, NY, EE. UU., 1967.
  6. ^ R. Galimberti y U. Montanari. Un algoritmo para la eliminación de líneas ocultas. Comunitario. ACM , 12(4):206–211, abril de 1969.
  7. ^ Cap. Hornung. Una aproximación a un algoritmo de líneas ocultas minimizado en el cálculo. Computadoras y gráficos , 6(3):121–126, 1982.
  8. ^ PP Loutrel. Una solución al problema de las líneas ocultas para poliedros dibujados por computadora. Traducción IEEE. Comput ., 19(3):205–213, marzo de 1970.
  9. ^ JF Blinn. Invisibilidad fraccionada. Computación IEEE. Grafico. Appl ., 8(6):77–84, noviembre de 1988.
  10. ^ ab Th. Ottmann y P. Widmayer. Resolver problemas de visibilidad mediante el uso de estructuras esqueléticas. En Proc. Fundamentos matemáticos de la informática 1984 , págs. 459–470, Londres, Reino Unido, 1984. Springer-Verlag.
  11. ^ ab Th. Ottmann, P. Widmayer y D. Wood . Un algoritmo eficiente en el peor de los casos para la eliminación de líneas ocultas. Internacional. J. Matemáticas informáticas , 18 (2): 93–119, 1985.
  12. ^ ab O. Nurmi. Un algoritmo de barrido de línea rápido para la eliminación de líneas ocultas. TBI , 25:466–472, septiembre de 1985.
  13. ^ ML Fredman y B. Weide. Sobre la complejidad de calcular la medida de U[a i , b i ]. Comunitario. ACM , 21:540–544, julio de 1978.
  14. ^ M. McKenna. Eliminación óptima de superficies ocultas en el peor de los casos. Transmisión ACM. Grafico. , 6:19–28, enero de 1987.
  15. ^ Sh. Gali. Un estudio de algoritmos prácticos de visibilidad del espacio de objetos. Notas del tutorial de SIGGRAPH, 1(2), 2001.
  16. ^ F. Devai. Un algoritmo de línea oculta exacta en tiempo paralelo O (log  N ). Avances en hardware de gráficos por computadora II , págs. 65–73, 1988.
  17. ^ JH Reif y S. Sen. Un algoritmo eficiente de eliminación de superficies ocultas sensibles a la salida y su paralelización. En Proc. 4to Simposio Anual. sobre geometría computacional , SCG '88, págs. 193–200, Nueva York, NY, EE. UU., 1988.
  18. ^ ab F. Devai. Un algoritmo óptimo de superficie oculta y su paralelización. En Computational Science and Its Applications , ICCSA 2011, volumen 6784 de Lecture Notes in Computer Science , págs. 17-29. Springer Berlín/Heidelberg, 2011.
  19. ^ S. Cook, C. Dwork y R. Reischuk. Límites de tiempo superior e inferior para máquinas de acceso aleatorio paralelas sin escrituras simultáneas. SIAM J. Comput ., 15:87–97, febrero de 1986.

enlaces externos