
En geometría computacional , la triangulación de polígonos es la partición de un área poligonal ( polígono simple ) P en un conjunto de triángulos , [1] es decir, encontrar un conjunto de triángulos con interiores que no se intersecan por pares cuya unión es P.
Las triangulaciones pueden considerarse casos especiales de grafos de líneas rectas planas . Cuando no hay agujeros ni puntos añadidos, las triangulaciones forman grafos planos exteriores máximos .
Triangulación de polígonos sin vértices adicionales
A lo largo del tiempo, se han propuesto varios algoritmos para triangular un polígono.
Casos especiales
.svg/500px-Polygon_Triangulations_(heptagon).svg.png)
Es trivial triangular cualquier polígono convexo en tiempo lineal en una triangulación de abanico , agregando diagonales desde un vértice a todos los demás vértices vecinos no más cercanos.
El número total de formas de triangular un n -gono convexo mediante diagonales que no se intersecan es el ( n −2)º número de Catalan , que es igual a
- ,
una fórmula encontrada por Leonhard Euler . [2]
Un polígono monótono se puede triangular en tiempo lineal con el algoritmo de A. Fournier y DY Montuno, [3] o el algoritmo de Godfried Toussaint . [4]
Método de corte de orejas

Una forma de triangular un polígono simple se basa en el teorema de las dos orejas , como el hecho de que cualquier polígono simple con al menos 4 vértices sin agujeros tiene al menos dos " orejas ", que son triángulos con dos lados siendo las aristas del polígono y el tercero completamente dentro de él. [5] El algoritmo consiste entonces en encontrar dicha oreja, eliminarla del polígono (lo que da como resultado un nuevo polígono que todavía cumple las condiciones) y repetir hasta que solo quede un triángulo.
Este algoritmo es fácil de implementar, pero más lento que otros algoritmos, y sólo funciona en polígonos sin agujeros. Una implementación que mantenga listas separadas de vértices convexos y cóncavos se ejecutará en tiempo O( n 2 ) . Este método se conoce como recorte de orejas y, a veces, recorte de orejas . Hossam ElGindy, Hazel Everett y Godfried Toussaint descubrieron un algoritmo eficiente para cortar orejas . [6]
Triangulación de polígonos monótonos

Un polígono simple es monótono con respecto a una línea L , si cualquier línea ortogonal a L interseca el polígono como máximo dos veces. Un polígono monótono se puede dividir en dos cadenas monótonas . Un polígono que es monótono con respecto al eje y se llama y-monótono . Un polígono monótono con n vértices se puede triangular en tiempo O( n ) . Suponiendo que un polígono dado es y-monótono, el algoritmo voraz comienza caminando sobre una cadena del polígono de arriba a abajo mientras agrega diagonales siempre que sea posible. [1] Es fácil ver que el algoritmo se puede aplicar a cualquier polígono monótono.
Triangulación de un polígono no monótono
Si un polígono no es monótono, se puede dividir en subpolígonos monótonos en tiempo O( n log n ) utilizando un enfoque de línea de barrido . El algoritmo no requiere que el polígono sea simple, por lo que se puede aplicar a polígonos con agujeros . En general, este algoritmo puede triangular una subdivisión plana con n vértices en tiempo O( n log n ) utilizando espacio O( n ) . [1]
Gráfica dual de una triangulación
Un gráfico útil que suele asociarse a una triangulación de un polígono P es el gráfico dual . Dada una triangulación T P de P , se define el grafo G ( T P ) como el grafo cuyo conjunto de vértices son los triángulos de T P , siendo dos vértices (triángulos) adyacentes si y solo si comparten una diagonal. Es fácil observar que G ( T P ) es un árbol con grado máximo 3.
Complejidad computacional
Hasta 1988, si un polígono simple puede triangularse más rápido que O( n log n ) tiempo era un problema abierto en geometría computacional. [1] Luego, Tarjan y Van Wyk (1988) descubrieron un algoritmo de tiempo O( n log log n ) para triangulación, [7] posteriormente simplificado por Kirkpatrick, Klawe y Tarjan (1992). [8] Siguieron varios métodos mejorados con complejidad O( n log * n ) (en la práctica, indistinguible del tiempo lineal ). [9] [10] [11]
Bernard Chazelle demostró en 1991 que cualquier polígono simple puede triangularse en tiempo lineal, aunque el algoritmo propuesto es muy complejo. [12] También se conoce un algoritmo aleatorio más simple con tiempo esperado lineal. [13]
El algoritmo de descomposición de Seidel [10] y el método de triangulación de Chazelle se analizan en detalle en Li y Klette (2011). [14]
La complejidad temporal de la triangulación de un polígono de n vértices con agujeros tiene un límite inferior Ω( n log n ) , en modelos de cálculo de árboles algebraicos. [1] Es posible calcular el número de triangulaciones distintas de un polígono simple en tiempo polinomial usando programación dinámica y (basándose en este algoritmo de conteo) generar triangulaciones uniformemente aleatorias en tiempo polinomial. [15] Sin embargo, contar las triangulaciones de un polígono con agujeros es #P-completo , por lo que es poco probable que se pueda hacer en tiempo polinomial. [16]
Objetos y problemas relacionados
- Ambos problemas de triangulación son un caso especial de triangulación (geometría) y un caso especial de partición de polígonos .
- La triangulación de peso mínimo es una triangulación en la que el objetivo es minimizar la longitud total del borde.
- Una triangulación de conjunto de puntos es una triangulación poligonal de la envoltura convexa de un conjunto de puntos. Una triangulación de Delaunay es otra forma de crear una triangulación basada en un conjunto de puntos.
- El asociaedro es un politopo cuyos vértices corresponden a las triangulaciones de un polígono convexo.
- Recubrimiento de triángulos poligonales , en el que los triángulos pueden superponerse.
- Mosaico por polígonos , donde el objetivo es cubrir todo el plano con polígonos de formas predefinidas.
Véase también
Referencias
- ^ abcde Mark de Berg , Marc van Kreveld , Mark Overmars y Otfried Schwarzkopf (2000), "3: Triangulación de polígonos", Geometría computacional (2ª ed.), Springer-Verlag , págs. 45–61, ISBN 3-540-65620-0
{{citation}}: CS1 maint: multiple names: authors list (link) - ^ Pickover, Clifford A. (2009), El libro de matemáticas , Sterling, pág. 184
- ^ Fournier, Alain ; Montuno, Delfin Y. (1984), "Triangulación de polígonos simples y problemas equivalentes", ACM Transactions on Graphics , 3 (2): 153–174, doi : 10.1145/357337.357341 , ISSN 0730-0301, S2CID 33344266
- ^ Toussaint, Godfried T. (1984), "Un nuevo algoritmo lineal para triangular polígonos monótonos", Pattern Recognition Letters , 2 (3): 155–158, Bibcode :1984PaReL...2..155T, doi :10.1016/0167-8655(84)90039-4
- ^ Meisters, Gary Hosler (1975), "Los polígonos tienen orejas", American Mathematical Monthly , 82 (6): 648–651, doi :10.2307/2319703, JSTOR 2319703
- ^ ElGindy, Hossam; Everett, Hazel; Toussaint, Godfried T. (1993), "Cortar una mazorca con el método de poda y búsqueda", Pattern Recognition Letters , 14 (9): 719–722, Bibcode :1993PaReL..14..719E, doi :10.1016/0167-8655(93)90141-y
- ^ Tarjan, Robert E. ; Van Wyk, Christopher J. (1988), "Un algoritmo de tiempo O( n log log n ) para triangular un polígono simple", SIAM Journal on Computing , 17 (1): 143–178, CiteSeerX 10.1.1.186.5949 , doi :10.1137/0217010, MR 0925194
- ^ Kirkpatrick, David G. ; Klawe, Maria M. ; Tarjan, Robert E. (1992), "Triangulación de polígonos en tiempo O( n log log n ) con estructuras de datos simples", Geometría discreta y computacional , 7 (4): 329–346, doi : 10.1007/BF02187846 , MR 1148949
- ^ Clarkson, Kenneth L. ; Tarjan, Robert ; van Wyk, Christopher J. (1989), "Un algoritmo rápido de Las Vegas para triangular un polígono simple", Geometría discreta y computacional , 4 (5): 423–432, doi : 10.1007/BF02187741
- ^ ab Seidel, Raimund (1991), "Un algoritmo aleatorizado incremental simple y rápido para calcular descomposiciones trapezoidales y para triangular polígonos", Computational Geometry , 1 : 51–64, CiteSeerX 10.1.1.55.5877 , doi : 10.1016/0925-7721(91)90012-4
- ^ Clarkson, Kenneth L .; Cole, Richard; Tarjan, Robert E. (1992), "Algoritmos paralelos aleatorios para diagramas trapezoidales", International Journal of Computational Geometry & Applications , 2 (2): 117–133, doi :10.1142/S0218195992000081, MR 1168952
- ^ Chazelle, Bernard (1991), "Triangulación de un polígono simple en tiempo lineal", Geometría discreta y computacional , 6 (3): 485–524, doi : 10.1007/BF02574703 , ISSN 0179-5376
- ^ Amato, Nancy M. ; Goodrich, Michael T. ; Ramos, Edgar A. (2001), "Un algoritmo aleatorio para la triangulación de un polígono simple en tiempo lineal", Geometría discreta y computacional , 26 (2): 245–265, doi : 10.1007/s00454-001-0027-x , ISSN 0179-5376
- ^ Li, Fajie; Klette, Reinhard (2011), Los caminos euclidianos más cortos , Springer , doi :10.1007/978-1-4471-2256-2, ISBN 978-1-4471-2255-5
- ^ Epstein, Peter; Sack, Jörg-Rüdiger (1994), "Generación de triangulaciones al azar", ACM Transactions on Modeling and Computer Simulation , 4 (3): 267–278, doi :10.1145/189443.189446, S2CID 14039662
- ^ Eppstein, David (2019), "Contar triangulaciones de polígonos es difícil", Proc. 35.º Simposio Internacional de Geometría Computacional , Leibniz International Proceedings in Informatics (LIPIcs), vol. 129, Schloss Dagstuhl, págs. 33:1–33:17, arXiv : 1903.04737 , doi : 10.4230/LIPIcs.SoCG.2019.33 , ISBN 9783959771047, Número de identificación del sujeto 75136891
Enlaces externos
- Demostración como Flash swf, algoritmo A Sweep Line.
- Explicación de Song Ho sobre el teselado GLU de OpenGL