Articulo de referencia

Esqueleto recto

El proceso de contracción, el esqueleto recto (azul) y el modelo del techo. En geometría , un esqueleto recto es un método para representar un polígono mediante un esqueleto top...

El proceso de contracción, el esqueleto recto (azul) y el modelo del techo.

En geometría , un esqueleto recto es un método para representar un polígono mediante un esqueleto topológico . Es similar en algunos aspectos al eje medial , pero se diferencia en que el esqueleto está compuesto por segmentos de línea recta, mientras que el eje medial de un polígono puede incluir curvas parabólicas. Sin embargo, ambos son homotópicamente equivalentes al polígono subyacente. [ 1 ]

Los esqueletos rectos fueron definidos por primera vez para polígonos simples por Aichholzer et al. (1995) [ 2 ] y generalizados a grafos de líneas rectas planas (PSLG) por Aichholzer y Aurenhammer (1996) [ 3 ] . En su interpretación como proyección de superficies de techo, ya han sido ampliamente discutidos por G.A. Peschka ( 1877 ) [ 4 ] . 

Definición

El esqueleto recto de un polígono se define mediante un proceso continuo de contracción en el que las aristas se mueven hacia adentro paralelamente a sí mismas a una velocidad constante. A medida que las aristas se mueven de esta manera, los vértices donde se encuentran pares de aristas también se mueven, a velocidades que dependen del ángulo del vértice. Si uno de estos vértices en movimiento colisiona con una arista no adyacente, el polígono se divide en dos debido a la colisión, y el proceso continúa en cada parte. El esqueleto recto es el conjunto de curvas trazadas por los vértices en movimiento durante este proceso. En la ilustración, la figura superior muestra el proceso de contracción y la figura central representa el esqueleto recto en azul.

Algoritmos

El esqueleto recto se puede calcular simulando el proceso de contracción mediante el cual se define; se han propuesto varios algoritmos variantes para calcularlo, que difieren en las suposiciones que hacen sobre la entrada y en las estructuras de datos que utilizan para detectar cambios combinatorios en el polígono de entrada a medida que se contrae.

Los siguientes algoritmos consideran una entrada que forma un polígono, un polígono con agujeros o un PSLG. Para una entrada poligonal, denotamos el número de vértices por n y el número de vértices reflejos (cóncavos, es decir, con un ángulo mayor que π ) por r . Si la entrada es un PSLG, entonces consideramos la estructura inicial del frente de onda, que forma un conjunto de polígonos, y nuevamente denotamos por n el número de vértices y por r el número de vértices reflejos con respecto a la dirección de propagación. La mayoría de los algoritmos aquí enumerados están diseñados y analizados en el modelo de computación RAM real .

  • Aichholzer et al. [ 2 ] [ 3 ] mostraron cómo calcular esqueletos rectos de PSLG en tiempo O( n 3  log n ), o más precisamente tiempo O(( n 2 + f ) log n ), donde n es el número de vértices del polígono de entrada y f es el número de eventos de volteo durante la construcción. La mejor cota conocida para f es O( n 3 ).   
  • Huber y Held ( 2010 , 2011 ) presentan un algoritmo con un tiempo de ejecución en el peor de los casos de O( nr log  n  ), o simplemente O( log n) , argumentando que su enfoque probablemente se ejecute en un tiempo casi lineal para muchas entradas. [ 5 ] [ 6 ]   
  • Petr Felkel y Štěpán Obdržálek diseñaron un algoritmo para polígonos simples que supuestamente tiene una eficiencia de O( nr + n log r ). [ 7 ] [ 8 ] Sin embargo, se ha demostrado que su algoritmo es incorrecto. [ 9 ] [ 10 ]
  • Al utilizar estructuras de datos para el problema del par más cercano bicromático , Eppstein y Erickson demostraron cómo construir problemas de esqueletos rectos utilizando un número lineal de actualizaciones de la estructura de datos del par más cercano. Una estructura de datos del par más cercano basada en quadtrees proporciona un algoritmo de tiempo O( nr  + n log n ), o una estructura de datos significativamente más compleja conduce a la mejor cota de tiempo asintótica O( n 1 + ε + n 8/11 + ε r 9/11 + ε ) , o más simplemente O( n 17/11 + ε ) , donde ε es cualquier constante mayor que cero. [ 11 ] Esta sigue siendo la mejor cota de tiempo en el peor de los casos conocida para la construcción de esqueletos rectos con entradas no restringidas, pero es compleja y no se ha implementado.   
  • Para polígonos simples en posición general , el problema de la construcción de esqueletos rectos es más fácil. Cheng, Mencel y Vigneron mostraron cómo calcular el esqueleto recto de polígonos simples en tiempo O( n log n log r + r 4/3 + ε ). [ 12 ] En el peor de los casos, r puede ser del orden de n , en cuyo caso este límite de tiempo puede simplificarse a O( n 4/3+ε ). Si los vértices del polígono de entrada tienen coordenadas racionales de O(log n) bits, su algoritmo puede mejorarse para ejecutarse en tiempo O( n  log n ), incluso si el polígono de entrada no está en posición general . 
  • Un polígono monótono con respecto a una línea L es un polígono cuya propiedad es que toda línea ortogonal a L lo interseca en un único intervalo. Cuando la entrada es un polígono monótono, su esqueleto recto se puede construir en tiempo O( n  log 2 n ). [ 13 ] 

Aplicaciones

Cada punto dentro del polígono de entrada puede elevarse al espacio tridimensional utilizando el tiempo en el que el proceso de contracción alcanza ese punto como la coordenada z del punto. La superficie tridimensional resultante tiene una altura constante en los bordes del polígono y se eleva con una pendiente constante desde ellos, excepto en los puntos del propio esqueleto recto, donde se encuentran parches de superficie en diferentes ángulos. De esta manera, el esqueleto recto puede utilizarse como el conjunto de líneas de cumbrera de un tejado de un edificio, basándose en paredes con la forma del polígono inicial. [ 2 ] [ 14 ] La figura inferior de la ilustración muestra una superficie formada a partir del esqueleto recto de esta manera.

Demaine, Demaine y Lubiw utilizaron el esqueleto recto como parte de una técnica para doblar una hoja de papel de manera que se pueda cortar un polígono dado con un solo corte recto (el teorema de doblar y cortar ), y problemas de diseño de origami relacionados . [ 15 ]

Barequet et al. utilizan esqueletos rectos en un algoritmo para encontrar una superficie tridimensional que interpola entre dos cadenas poligonales dadas . [ 16 ]

Tănase y Veltkamp proponen descomponer polígonos cóncavos en uniones de regiones convexas utilizando esqueletos rectos, como paso de preprocesamiento para la coincidencia de formas en el procesamiento de imágenes. [ 17 ]

Bagheri y Razzazi utilizan esqueletos rectos para guiar la colocación de vértices en un algoritmo de dibujo de grafos en el que el dibujo del grafo está restringido a estar dentro de un límite poligonal. [ 18 ]

El esqueleto recto también puede utilizarse para construir una curva desplazada de un polígono, con esquinas biseladas , de forma análoga a la construcción de una curva desplazada con esquinas redondeadas formadas a partir del eje medial. Tomoeda y Sugihara aplican esta idea en el diseño de señalización, visible desde ángulos amplios, con una apariencia ilusoria de profundidad. [ 19 ] De manera similar, Asente y Carr utilizan esqueletos rectos para diseñar degradados de color que coinciden con los contornos de las letras u otras formas. [ 20 ]

Al igual que con otros tipos de esqueletos, como el eje medial , el esqueleto recto puede utilizarse para reducir un área bidimensional a una representación unidimensional simplificada. Por ejemplo, Haunert y Sester describen una aplicación de este tipo para esqueletos rectos en sistemas de información geográfica , en la determinación de los ejes centrales de las carreteras. [ 21 ] [ 22 ]

En la generación de mallas mediante el método de elementos finitos (MEF) , se han utilizado los conceptos de esqueleto recto y contracción basada en capas para descomponer dominios geométricos complejos para el modelado hidrodinámico y de aguas poco profundas. Al analizar las capas de propagación del frente de onda, los algoritmos pueden transformar automáticamente mallas triangulares no estructuradas en cuadrículas cuadriláteras alineadas y de elementos mixtos, ajustándose a una función de tamaño geométrico subyacente. [ 23 ]

Todo árbol sin vértices de grado dos puede realizarse como el esqueleto recto de un polígono convexo . [ 24 ] La envoltura convexa de la forma del techo correspondiente a este esqueleto recto forma una realización de Steinitz del grafo de Halin formado a partir del árbol conectando sus hojas en un ciclo.

Dimensiones superiores

Barequet et al. definieron una versión de esqueletos rectos para poliedros tridimensionales , describieron algoritmos para calcularla y analizaron su complejidad en varios tipos diferentes de poliedros. [ 25 ]

Huber et al. investigaron espacios métricos bajo los cuales coinciden los diagramas de Voronoi y los esqueletos rectos correspondientes. Para dos dimensiones, la caracterización de dichos espacios métricos es completa. Para dimensiones superiores, este método puede interpretarse como una generalización de esqueletos rectos de ciertas formas de entrada a dimensiones arbitrarias mediante diagramas de Voronoi. [ 26 ]

Referencias

  1. Huber, Stefan (2018). "La topología de esqueletos y desplazamientos" (PDF) . Actas del 34º Taller Europeo de Geometría Computacional (EuroCG'18) ..
  2. 1 2 3 Aichholzer, Oswin; Aurenhammer, Franz ; Alberts, David; Gartner, Bernd (1995). "Un nuevo tipo de esqueleto para polígonos" . Revista de Informática Universal . 1 (12): 752– 761. doi : 10.1007/978-3-642-80350-5_65 . SEÑOR 1392429 . .
  3. 1 2 Aichholzer, Oswin; Aurenhammer, Franz (1996). "Esqueletos rectos para figuras poligonales generales en el plano" . Actas de la 2.ª Conferencia Internacional Anual sobre Computación y Combinatoria (COCOON '96) . Lecture Notes in Computer Science. Vol. 1090. Springer-Verlag. pp. 117–126 .  
  4. ^ Peschka, Gustav A. (1877). Kotirte Ebenen: Kotirte Projektionen und deren Anwendung; Vorträge . Brünn: Buschak & Irrgang. doi : 10.14463/GBV:865177619 ..
  5. Huber, Stefan; Held, Martin (2010). "Cálculo de esqueletos rectos de grafos planos de líneas rectas basados ​​en grafos de motocicletas" (PDF) . Actas de la 22.ª Conferencia Canadiense sobre Geometría Computacional ..
  6. Huber, Stefan; Held, Martin (2011). "Resultados teóricos y prácticos sobre esqueletos rectos de grafos planos de líneas rectas" (PDF) . Actas del Vigésimo Séptimo Simposio Anual sobre Geometría Computacional (SCG'11), 13-15 de junio de 2011, París, Francia . págs. 171-178 . .
  7. "CenterLineReplacer" . Transformadores FME . Software seguro . Consultado el 5 de agosto de 2013 ..
  8. Felkel, Petr; Obdržálek, Štěpán (1998). "Implementación de esqueleto recto". SCCG 98: Actas de la 14ª Conferencia de primavera sobre gráficos por computadora . págs. 210-218 . .
  9. Huber, Stefan (2012). Computing Straight Skeletons and Motorcycle Graphs: Theory and Practice . Shaker Verlag. ISBN 978-3-8440-0938-5..
  10. Yakersberg, Evgeny (2004). Morfismo entre formas geométricas mediante interpolación basada en esqueletos rectos . Instituto Tecnológico de Israel..
  11. Eppstein, David ; Erickson, Jeff (1999). "Levantando techos, rompiendo ciclos y jugando al billar: aplicaciones de una estructura de datos para encontrar interacciones por pares" . Geometría discreta y computacional . 22 (4): 569–592 . doi : 10.1007/PL00009479 . MR 1721026. S2CID 12460625 .  .
  12. Cheng, Siu-Wing; Mencel, Liam; Vigneron, Antoine (2016). "Un algoritmo más rápido para calcular esqueletos rectos". ACM Transactions on Algorithms . 12 (3): 44:1–44:21. arXiv : 1405.4691 . doi : 10.1145/2898961 ..
  13. Biedl, Therese ; Held, Martin; Huber, Stefan; Kaaser, Dominik; Palfrader, Peter (febrero de 2015). "Un algoritmo simple para calcular esqueletos rectos con peso positivo de polígonos monótonos" ( PDF) . Information Processing Letters . 115 (2): 243–247 . doi : 10.1016/j.ipl.2014.09.021 . PMC 4308025. PMID 25648376 .  Como señalan Biedl et al., un algoritmo anterior para polígonos monótonos de Das et  al. es incorrecto como se describe, y en el mejor de los casos solo funciona para entradas en posición general que no tienen eventos vértice-vértice: Das, Gautam K.; Mukhopadhyay, Asish; Nandy, Subhas C.; Patil, Sangameswar; Rao, SV (2010). "Computing the straight skeletons of a monotone polygon in O( n log n ) time" (PDF) . Proceedings of the 22nd Canadian Conference on Computational Geometry .  .
  14. Bélanger, David (2000). Diseño de cubiertas de edificios ..
  15. Demaine, Erik D.; Demaine , Martin L .; Lubiw, Anna (1998). «Folding and cutting paper» . Artículos revisados ​​de la Conferencia Japonesa sobre Geometría Discreta y Computacional (JCDCG'98) . Lecture Notes in Computer Science. Vol. 1763. Springer-Verlag. pp. 104–117 . doi : 10.1007/b75044 . ISBN   978-3-540-67181-7. S2CID 32962663 . .
  16. Barequet, Gill; Goodrich, Michael T .; Levi-Steiner, Aya; Steiner, Dvir (2003). "Interpolación de contornos basada en esqueletos rectos" . Actas del decimocuarto simposio anual ACM-SIAM sobre algoritmos discretos . págs. 119–127 . .
  17. Tănase, Mirela; Veltkamp, ​​Remco C. (2003). "Descomposición poligonal basada en el esqueleto de líneas rectas". Actas del 19.º Simposio Anual de la ACM sobre Geometría Computacional . págs. 58–67 . doi : 10.1145/777792.777802 . ISBN  1-58113-663-3. S2CID 18173658 . .
  18. Bagheri, Alireza; Razzazi, Mohammadreza (2004). "Dibujo de árboles libres dentro de polígonos simples usando esqueletos de polígonos". Computing and Informatics . 23 (3): 239– 254. MR 2165282 . .
  19. Tomoeda, Akiyasu; Sugihara, Kokichi (2012). «Creación computacional de un nuevo signo sólido ilusorio». Noveno Simposio Internacional sobre Diagramas de Voronoi en Ciencia e Ingeniería (ISVD 2012) . págs. 144–147 . doi : 10.1109/ISVD.2012.26 . ISBN  978-1-4673-1910-2. S2CID 27610348 . .
  20. Asente, Paul; Carr, Nathan (2013). «Creación de gradientes de contorno mediante biseles 3D». Actas del Simposio sobre Estética Computacional (CAE '13, Anaheim, California) . Nueva York, NY, EE. UU.: ACM. págs. 63–66 . doi : 10.1145/2487276.2487283 . ISBN  978-1-4503-2203-4. S2CID 17302186 . .
  21. Haunert, Jan-Henrik; Sester, Monika (2008). "Colapso de área y ejes de carreteras basados ​​en esqueletos rectos". GeoInformatica . 12 (2): 169– 191. doi : 10.1007/s10707-007-0028-x . S2CID 2169666 . .
  22. Raleigh, David Baring (2008). Ajuste de líneas centrales de carreteras mediante levantamientos topográficos de esqueleto recto a partir de datos de adquisición GPS de baja resolución: un estudio de caso en Bolivia . Universidad Estatal de Ohio, Ciencias Geodésicas y Topografía..
  23. Mattioli, Dominik D. (2017). QuADMESH+: Un generador de mallas avanzadas cuadrangulares para modelos hidrodinámicos . Universidad Estatal de Ohio, Ingeniería Civil, Ambiental y Geodésica..
  24. Aichholzer, Oswin; Cheng, Howard; Devadoss, Satyan L.; Hackl, Thomas; Huber, Stefan; Li, Brian; Risteski, Andrej (2012). "¿Qué hace que un árbol sea un esqueleto recto?" (PDF) . Actas de la 24.ª Conferencia Canadiense sobre Geometría Computacional (CCCG'12) ..
  25. Barequet, Gill; Eppstein, David ; Goodrich, Michael T .; Vaxman, Amir (2008). "Esqueletos rectos de poliedros tridimensionales". Actas del 16.º Simposio Europeo sobre Algoritmos . Lecture Notes in Computer Science. Vol. 5193. Springer-Verlag. pp. 148–160 . arXiv : 0805.0022 . doi : 10.1007/978-3-540-87744-8_13 . ISBN   978-3-540-87743-1. S2CID 42150 . .
  26. Huber, Stefan; Aichholzer, Oswin; Hackl, Thomas; Vogtenhuber, Birgit (2014). "Esqueletos rectos mediante diagramas de Voronoi bajo funciones de distancia poliédricas" (PDF) . Actas de la 26.ª Conferencia Canadiense sobre Geometría Computacional (CCCG'14) ..
  • Erickson, Jeff. "Esqueleto recto de un polígono simple" .
  • Esqueleto recto 2D en CGAL , la biblioteca de algoritmos de geometría computacional.
  • Esqueleto recto para polígono con agujeros. Constructor de esqueleto recto implementado en Java.
  • Amit Parnerkar, Sarnath Ramnath. "Diseño de un algoritmo eficiente para encontrar el esqueleto recto de un polígono simple en O(n log n) " .
  • STALGO : "STALGO es un paquete de software C++ de nivel industrial para calcular esqueletos rectos y curvas de inglete desplazadas." Por Stefan Huber.