triangulación de polígonos - tamps.cinvestav.mxertello/gc/sesion11.pdf · prueba probaremos este...
TRANSCRIPT
Triangulación de polígonos
Dr. Eduardo A. RODRÍGUEZ TELLO
CINVESTAV-Tamaulipas
26 de febrero del 2013
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 1 / 105
1 Triangulación de polígonosProblema de triangulación de polígonosPolígonos monótonosTriangulación de polígonos monótonosDivisión de un polígono en subpolígonos monótonosEjemplo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 2 / 105
Triangulación de polígonos
El material de la clase de hoy está basado en el capítulo 3 del libro:Mark de Berg, Otfried Cheong, Marc van Kreveld and MarkOvermars. Computational Geometry: Algorithms and Applications.Springer, 3rd edition (April 16, 2008), ISBN-10: 3540779736.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 3 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Triangulación es el problema general de subdividir un dominioespacial en símplexes (o simplices), lo que en el plano significatriángulos
Para triangular un polígono simple (cuyos lados no se intersectan)P es necesario dibujar diagonales entre pares de sus vértices
Una diagonal es un segmento de línea que conecta dos vértices deP y cae en el interior de dicho polígono
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 4 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Polígono simple Triangulación
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 5 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
De manera más formal la triangulación de un polígono es ladescomposición de éste en triángulos utilizando para ello elconjunto máximo de diagonales que no se intersectan
Se requiere que el conjunto de diagonales que no se intersectansea máximo para garantizar que ningún triángulo tenga un vérticedel polígono en el interior de una de sus aristas
Esto podría suceder si el polígono tiene tres vértices colinealesconsecutivos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 6 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 7 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Usualmente la triangulación de un polígono no es única
Por ejemplo, el polígono de la siguiente figura puede sertriangulado en al menos dos formas diferentes
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 8 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Hay dos pregunta que surgen naturalmente:1 ¿Existe siempre una triangulación para un polígono?2 ¿Cuántos triángulos pueden existir en una triangulación?
El siguiente teorema responde a estas preguntas
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 9 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
TeoremaTodo polígono simple admite una triangulación, y toda triangulaciónde un polígono simple con n vértices consiste exactamente de n− 2triángulos
PruebaProbaremos este teorema por inducción sobre n
En el caso trivial cuando n = 3 el polígono en sí mismo es untriángulo por lo que el teorema se cumple
Sea n > 3, asumamos que el teorema se cumple para toda m < n
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 10 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Sea P un polígono con n vértices
Probaremos primero la existencia de una diagonal en P
Sea v el vértice más a la izquierda de P
Sean u y w los dos vértices vecinos de v en la frontera P
Si el segmento abierto uw cae en el interior de P , se ha encontradouna diagonal
De lo contrario, hay uno o más vértices dentro del triángulo4uvw, o en la diagonal uw
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 11 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
De esos vértices, sea v′ el más alejado de la línea entre u y w
El segmento conectando v′ con v no puede intersectar una aristade P , porque tal arista tendrá un punto extremo dentro deltriángulo que está más lejos de la línea entre u y w, contradiciendola definición de v′
Por lo tanto, vv′ es una diagonal
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 12 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Cualquier diagonal corta P en dos subpolígonos simples P1 y P2
Sea m1 el número de vértices de P1 y m2 el número de vértices deP2
Tanto m1 como m2 deben ser más pequeños que n, por inducciónP1 y P2 pueden entonces ser triangulados
Así que P puede también ser triangulado
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 13 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Resta probar que cualquier triangulación de P consiste de n− 2triángulos
Para este fin, consideremos una diagonal arbitraria en algunatriangulación TP
Esta diagonal corta P en dos subpolígonos con m1 y m2 vértices,respectivamente
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 14 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Cada vértice de P ocurre en exactamente uno de los dossubpolígonos, excepto por los vértices que definen la diagonal(ocurren en ambos subpolígonos)
Por lo tanto, m1 + m2 = n + 2
Por inducción, cualquier triangulación de Pi consiste de mi − 2triángulos, lo que implica que TP consiste de(m1 − 2) + (m2 − 2) = n− 2 triángulos
�
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 15 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
Existe un algoritmo simple que corre en tiempo polinomial pararesolver el caso planar del problema de triangulación
Sin embargo, en el caso general de poliedros no convexos endimensiones superiores los mejores algoritmos reportados correnen tiempo O(n log n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 16 / 105
Triangulación de polígonos Problema de triangulación de polígonos
Problema de triangulación de polígonos
El algoritmo que vamos a presentar hoy es un proceso de dospasos
El primero consiste en convertir un polígono arbitrario en unacolección disjunta de polígonos monótonos
El segundo paso aplica un algoritmo de triangulación a cadapolígono monótono resultante del paso anterior
El primer paso toma un tiempo O(n)
El segundo paso corre en tiempo O(n log n), por lo que todo elalgoritmo tiene complejidad O(n log n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 17 / 105
Triangulación de polígonos Polígonos monótonos
1 Triangulación de polígonosProblema de triangulación de polígonosPolígonos monótonosTriangulación de polígonos monótonosDivisión de un polígono en subpolígonos monótonosEjemplo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 18 / 105
Triangulación de polígonos Polígonos monótonos
Polígonos monótonos
Una cadena poligonal C se dice que es estrictamente monótonacon respecto a una determinada línea L, si cualquier línea que esortogonal a L intersecta C como máximo en un punto
Una cadena C es monótona con respecto a L si cada línea que esortogonal a L intersecta C en un solo componente conectado
Así, puede intersectar en un solo punto, o a lo largo de un solosegmento de línea.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 19 / 105
Triangulación de polígonos Polígonos monótonos
Polígonos monótonos
Ejemplo de una cadena monótona
a
b
cd
ef
L
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 20 / 105
Triangulación de polígonos Polígonos monótonos
Polígonos monótonos
Un polígono P se dice que es monótono con respecto a una líneaL, si su frontera (a veces denotada bnd(P) o ∂P), puede dividirseen dos cadenas, cada una de las cuales es monótona con respecto aL
Dicho de otra forma, un polígono P en el plano es llamadomonótono con respecto a una determinada línea L, si cualquierlínea que es ortogonal a L intersecta P , como máximo dos veces
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 21 / 105
Triangulación de polígonos Polígonos monótonos
Polígonos monótonos
Ejemplo de polígonos monótonos con respecto a una línea L
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 22 / 105
Triangulación de polígonos Polígonos monótonos
Polígonos monótonos
En lo sucesivo vamos a considerar la monotonía (monotonicidad)con respecto al eje x
Vamos a llamar a estos polígonos horizontalmente monótonos
Es fácil comprobar si un polígono es horizontalmente monótono
¿Cómo?
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 23 / 105
Triangulación de polígonos Polígonos monótonos
Polígonos monótonos
Los pasos a seguir son:1 Encontrar los vértices más a la izquierda y a la derecha del
polígono (i.e. aquellos con la mínima y máxima coordenada x), enun tiempo O(n)
2 Estos vértices permiten dividir la frontera del polígono en doscadenas, una cadena superior y una cadena inferior. Se camina a lolargo de estas cadenas de izquierda a derecha, verificando que lascoordenadas x sean no decrecientes. Esto toma un tiempo O(n).
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 24 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
1 Triangulación de polígonosProblema de triangulación de polígonosPolígonos monótonosTriangulación de polígonos monótonosDivisión de un polígono en subpolígonos monótonosEjemplo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 25 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Podemos triangular un polígono monótono mediante una simplevariación del método de barrido del plano
Empezamos con la suposición de que los vértices del polígonohan sido ordenados en orden creciente de sus coordenadas x
Para simplificar asumimos que no hay coordenadas x duplicadas.En caso contrario, se rompe el empate entre las cadenas superior einferior de forma arbitraria, y dentro de una cadena de modo queel orden de la cadena se preserve
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 26 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Observemos que para realizar esto no se requiere hacer unordenamiento
Podemos simplemente extraer la cadena superior e inferior ycombinarlas (como se hace en el algoritmo MergeSort) en tiempoO(n)
La idea detrás del algoritmo de triangulación es muy simple:Tratar de triangular todo lo que se pueda a la izquierda del vérticeactual, añadiendo diagonales y retirar la región ya trianguladapara evitar considerarla más adelante
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 27 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 28 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 29 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 30 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 31 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 32 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 33 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 34 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Lo que hace este algoritmo eficiente es el hecho de que cuandollegamos a un vértice la región no triangulada que se encuentra ala izquierda de este vértice siempre tiene una estructura muysimple
Esta estructura nos permite determinar en tiempo constante si esposible añadir otra diagonal
Y, en general, podemos añadir cada diagonal adicional en tiempoconstante
Dado que cualquier triangulación consiste de n− 3 diagonales, elproceso se ejecuta en un tiempo total O(n)
Esta estructura es descrita en el lema siguiente
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 35 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Lema (Invariante principal)
Para i ≥ 2, sea vi el vértice que acaba de ser procesado por elalgoritmo de triangulación. La región no triangulada situada a laizquierda de vi consiste de dos cadenas x-monótonas, una inferiory una superior, cada una con al menos una arista.
Si la cadena de vi a u tiene dos o más aristas, entonces estas aristasconstituyen una cadena reflejo (es decir, una secuencia de vérticescon todos los ángulos interiores de al menos 180 grados).
La otra cadena consta de una sola arista cuyo punto extremoizquierdo es u y cuyo punto extremo derecho se encuentra a laderecha de vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 36 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Invariante inicial
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 37 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Probaremos la invariante por inducción
Como caso base, consideremos el caso de v2. Aquí u = v1, unacadena consiste de una arista única v2v1 y la otra cadena consistede la otra arista adyacente a v1
Para demostrar la invariante principal, haremos un análisis decómo manejar el próximo evento que involucra a vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 38 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Asumiremos que la invariante se mantiene en vi−1 y que ésta secumple después de que cada evento ha sido procesado
Existen los siguientes dos casos a los que el algoritmo debe hacerfrente:
1 vi cae en la cadena opuesta a la que pertenece vi−1
2 vi cae en la misma cadena que vi−1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 39 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Caso 1: vi cae en la cadena opuesta a la que pertenece vi−1
En este caso añadimos diagonales que unan vi a todos los vérticesen la cadena reflejo, desde vi−1 hasta u (pero sin incluirlo)
Tengamos en cuenta que todos estos vértices son visibles desde vi
Desde luego u es visible a vi
Porque la cadena es reflejo, x-monótona, y se encuentra a laizquierda de vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 40 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Caso 1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 41 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Además, la cadena en si misma no puede bloquear la visibilidadde vi a otro vértice de la cadena
Por último, el hecho de que el polígono es x-monótono implicaque la parte sin procesar del polígono (que está a la derecha de vi)no puede “volver” y bloquear la visibilidad de la cadena
Después de hacer esto, fijamos u = vi−1
La invariante se mantiene, y la cadena reflejo es trivial puesconsiste de una sola arista vivi−1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 42 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Caso 2: vi cae en la misma cadena que vi−1
Caminamos de vuelta a lo largo de la cadena reflejo añadiendodiagonales uniendo vi a los vértices previos hasta queencontremos el primero que no sea visible a vi
Como puede verse en la siguiente figura, esto puede implicar:
a) Conectar vi a uno o más vértices
b) No conectar vi con ningún vértice adicional
Esto en función de si el primer ángulo es inferior o superior a 180grados
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 43 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
Caso 2a Caso 2b
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 44 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
En cualquier caso, los vértices que se han cortado por diagonalesya no están en la cadena, y vi se convierte en el nuevo puntoextremo de la cadena
Una vez más, de la x-monotonía se desprende que la parte sinprocesar del polígono no puede bloquear la visibilidad de vi a lacadena
Tengamos en cuenta que cuando se finaliza el resto de la cadenadesde vi a u es una cadena reflejo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 45 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Triangulación de polígonos monótonos
¿Cómo se implementa esto?
Los vértices en la cadena reflejo pueden ser almacenados en unapila
Mantenemos una bandera que indica si la pila está en cadenasuperior o en la inferior, y asumimos que para cada nuevo vérticese sabe a qué cadena del polígono pertenece
Tengamos en cuenta que las decisiones acerca de la visibilidadpuede basarse simplemente en pruebas de orientacióninvolucrando vi y los dos primeros elemento de la pila
Cuando conectamos vi con una diagonal, se tiene que retirar unelemento de la pila
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 46 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Análisis de complejidad
Hemos dicho que este algoritmo se ejecuta en tiempo O(n)
Como mencionamos anteriormente, la lista ordenada de vérticespuede construirse en un tiempo O(n) a través de la combinación(merge)
La cadena reflejo se almacena en una pila
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 47 / 105
Triangulación de polígonos Triangulación de polígonos monótonos
Análisis de complejidad
En un tiempo O(1) por cada diagonal, podemos realizar unaprueba de orientación para determinar si es necesario añadir ladiagonal
Suponiendo una lista de aristas doblemente conectada (DCEL) ladiagonal puede ser agregada en tiempo constante
Dado que el número de diagonales es n− 3, el tiempo total es O(n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 48 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
1 Triangulación de polígonosProblema de triangulación de polígonosPolígonos monótonosTriangulación de polígonos monótonosDivisión de un polígono en subpolígonos monótonosEjemplo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 49 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Para poder ejecutar el algoritmo de triangulación antes descrito,en primer lugar hay que subdividir un polígono simple Parbitrario en polígonos monótonos
Esta tarea es también realizada con un enfoque de barrido delplano
A continuación describiremos los detalles de este algoritmo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 50 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Imagínese caminando desde el vértice más a la izquierda de Phacia el vértice más a la derecha a lo largo de la cadena superior oinferior
Un vértice donde la dirección en la que caminamos cambia deizquierda a derecha o de derecha a izquierda es llamado unvértice de giro
Para subdividir P en piezas x-monótonas deben poderse procesarestos vértices especiales
Esto puede hacerse mediante la adición de diagonales
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 51 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vértice de giro
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 52 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Si en un vértice de giro v, ambas aristas incidentes van hacia laderecha y el interior del polígono se encuentra localmente a laizquierda de v, entonces debemos elegir una diagonal que vahacia la izquierda desde v
Esta diagonal divide al polígono en dos
El vértice v aparecerá en ambas piezas
Además, en ambas piezas v tiene una arista que va hacia laderecha (es decir, sobre las aristas originales de P) y una aristaque va hacia la izquierda (la diagonal)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 53 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vértice de giro
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 54 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Por lo tanto, v deja de ser un vértice de giro en cualquiera de losdos subpolígonos resultantes
Si las dos aristas incidentes de un vértice de giro van hacia laizquierda y en el interior del polígono se encuentra localmente ala derecha de él, tenemos que elegir una diagonal que va hacia laderecha
Esto parece indicar que hay diferentes tipos de vértices de giro.Vamos a ser más precisos en cuanto a este punto
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 55 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Para definir correctamente los tipos de vértices de giro debemosponer mucha atención a los vértices con coordenadas x iguales
Para ello definiremos dos relaciones de orden, derecha e izquierdade la siguiente manera:
Un punto p está a la derecha de otro punto q si px > qx o px = qx ypy > qyUn punto p está a la izquierda de otro punto q si px < qx o px = qx ypy < qy
Esto resulta en que los eventos se procesen de arriba hacia abajo alo largo de la línea de barrido
Y tiene el mismo efecto que si giráramos (hipotéticamente) la líneade barrido infinitesimalmente a la derecha
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 56 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Existen cinco tipos de vértices en un polígono P
Cuatro de ellos son vértices de giro: vértice de inicio, vértice final,vértice de división y vértices de combinación
Un vértice v es un vértice de inicio si sus dos vecinos seencuentran a la derecha de él y el ángulo interior en v es menorque 180◦ (π radianes)
Si el ángulo interior es mayor que 180◦ entonces v es un vértice dedivisión
Si los dos vecinos se encuentran a la derecha de v, entonces elángulo interior no puede ser exactamente 180◦
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 57 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Un vértice es un vértice final si sus dos vecinos se encuentran a laizquierda de él y en el ángulo interior en v es menor que 180◦
Si el ángulo interior es mayor que 180◦ entonces v es un vértice decombinación
Los vértices que no son vértices de giro son vértices regulares
Así pues, un vértice regular tiene uno de sus vecinos a laizquierda de él, y el otro a la derecha
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 58 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Tipos de vértices
InicioFinalRegularDivisionCombinacion
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 59 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Estos nombres han sido seleccionados porque el algoritmo utilizaun barrido del plano de izquierda a derecha, manteniendo laintersección de la línea de barrido con el polígono
Cuando la línea de barrido llega a un vértice de división, uncomponente de la intersección se divide, cuando llega a un vérticede combinación, dos componentes se combinan, y asísucesivamente
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 60 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Tanto los vértices de división como los de combinación sonfuentes de no monotonía local
LemaUn polígono es x-monótono si no tiene vértices de división o vérticesde combinación
Pueden consultar la demostración de este lema en el libro de Berget al.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 61 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
El lema anterior implica que P se ha dividido en piezasx-monótonas una vez que logramos procesar su vértices dedivisión y de combinación
Esto lo hacemos al agregar una diagonal hacia la izquierda apartir de cada vértice de división
Y una diagonal hacia la derecha desde cada vértice decombinación
Desde luego, estas diagonales no se intersectan entre sí
Una vez que hayamos hecho esto, se logrará dividir P en piezasx-monótonas
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 62 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vamos a discutir primero el caso de un vértice de división (ambasaristas se encuentran a la derecha del vértice)
Cuando un vértice de división v es encontrado por la línea debarrido habrá una arista ea del polígono encima y una arista ebsituada abajo de él
Podemos considerar conectar el vértice de división al puntoextremo izquierdo de una de estas dos aristas, pero puede ser queningún punto extremo sea visible al vértice de división
Tenemos que mantener un vértice que es visible para cualquiervértice de división que pueda surgir entre ea y eb
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 63 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Para ello, imagine una luz fluorescente que brilla desde cadapunto en ea (vértices blancos de la figura)
Tenga en cuenta que el punto extremo izquierdo ea es consideradoen este conjunto también
Decimos entonces que estos vértices son verticalmente visiblesabajo de ea
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 64 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 65 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Entre todos los vértices que son iluminados por estos rayos de luzverticales, sea u el más a la derecha.
Entonces u es visible para todo punto a lo largo de la línea debarrido entre ea y eb
Esto sugiere el siguiente concepto, el cual se define para cadaarista ea que intersecta la línea de barrido, de manera que elpolígono interior se encuentra localmente por debajo de ea
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 66 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
auxiliar(ea): Sea eb la arista del polígono situada justo debajo de eaen la línea de barrido
El vértice auxiliar es el vértice más a la derecha verticalmentevisible bajo ea en la cadena poligonal entre ea y eb
Unimos cada vértice de división a el auxiliar(ea), donde ea es laarista de P inmediatamente encima del vértice de división
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 67 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 68 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Tengamos en cuenta que es posible que el auxiliar sea el puntoextremo izquierdo de ea
También es importante resaltar que el auxiliar(ea) se define conrespecto a la ubicación actual de la línea de barrido. A medida quela línea de barrido se mueve, su valor cambia
Además, está definido sólo para aquellas aristas intersectadas porla línea de barrido
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 69 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
En cuanto a los vértices de combinación parece más difícildeshacerse de ellos, porque necesitan una diagonal a un vérticesituado más a la derecha que ellos
Debido a que la parte de P a la derecha de la línea de barrido nose ha explorado todavía, no podemos agregar una diagonal deesta forma cuando encontramos un vértice de combinación
Afortunadamente, este problema es más fácil de resolver de loque parece a primera vista
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 70 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Supongamos que la línea de barrido llega a un vértice decombinación vi
Sean eb y ea las aristas inmediatamente abajo y arriba de la línea debarrido, respectivamente
Observe que vi se convierte en el nuevo auxiliar(ea) cuandolleguemos a él
Nos gustaría conectar vi al vértice más a la izquierda situado a laderecha de la línea de barrido entre eb y ea
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 71 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
vi
ea
eb
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 72 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Esto es exactamente lo contrario a lo que hicimos con los vérticesde división, los cuales se conectaron al vértice más a la derechasituado a la izquierda de la línea de barrido entre eb y ea
Esto no es sorprendente puesto que los vértices de combinaciónson vértices de división al revés
Por supuesto, no conocemos el vértice más a la izquierda situadoa la derecha de la línea de barrido cuando llegamos a vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 73 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Pero es fácil encontrarlo más tarde: cuando se llega a un vértice vmque reemplaza vi como el auxiliar(ea), pues este es el vértice queestamos buscando
Por lo tanto, cada vez que sustituimos el auxiliar de alguna arista,se comprobará si el antiguo auxiliar es un vértice de combinación
Si es así, se añade la diagonal entre el antiguo y el nuevo auxiliar
Esta diagonal siempre se añade cuando el nuevo auxiliar es unvértice de división, con el fin de eliminarlo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 74 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
vi
vm
ea
eb
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 75 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Si el auxiliar anterior era un vértice de combinación, entonces nosdeshacemos de un vértice de división y uno de combinación conla misma diagonal
También puede ocurrir que el auxiliar de ea no sea sustituido mása la derecha de vi
En este caso podemos conectar vi al extremo derecho de ea
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 76 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Para realizar las tareas que acabamos de describir tenemos queencontrar la arista arriba ea de cada vértice
Por lo tanto, debemos almacenar las aristas de P que intersectanla línea de barrido en las hojas de un árbol binario balanceado T
El orden de izquierda a derecha de las hojas de T corresponde alorden de arriba a abajo de las aristas
Debido a que sólo estamos interesados en las aristas arriba de losvértices de división y combinación, sólo necesitamos almacenaren T las aristas que tienen el interior de P abajo de ellas
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 77 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Con cada arista en T almacenamos su auxiliar
El árbol T y los auxiliares almacenados con las aristas forman elestatus de la línea de barrido del algoritmo
El estatus cambia conforme la línea de barrido se mueve: lasaristas comienzan o dejan de intersectar la línea de barrido, y elauxiliar de una arista puede ser sustituido
El algoritmo particiona P en subpolígonos que deben serprocesados en una etapa posterior
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 78 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Para tener un fácil acceso a estos subpolígonos debemosalmacenar la subdivisión inducida por P y las diagonalesagregadas en una lista de aristas doblemente conectada D
Suponemos que P está inicialmente especificado como una listade aristas doblemente conectada
Las diagonales calculadas para los vértices de división y decombinación se agregan a D
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 79 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Para acceder a D usamos apuntadores entre las aristas en T y lasaristas correspondientes en D
De esta forma agregar una diagonal puede hacerse en tiempoconstante con una simple manipulación de apuntadores
El algoritmo global es el siguiente
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 80 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
subdivisión MonótonaEntrada: Un polígono simple P almacenado en una lista de aristasdoblemente conectada DSalida: Una subdivisión de P en subpolígonos monótonos almacenadaen D
1 Construir una cola de prioridad Q de los vértices de P usando suscoordenadas x como prioridad. Si dos puntos tienen la mismacoordenada x entonces se usa el orden lexicográfico (x, y)
2 Inicializar un árbol binario balanceado T a vacío3 while Q 6= ∅ do
a Remueve el vértice vi con la más alta prioridad de Qb Llama al procedimiento adecuado para procesar vi dependiendo de
su tipo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 81 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Procesamiento de eventosHay seis tipos de eventos basados en el análisis de la estructuralocal de las aristas al rededor de cada vértice
Sea vi el vértice actual encontrado por la línea de barrido
Vértice de inicio1 Insertar sus aristas incidentes ea y eb en el estatus de la línea de
barrido T2 auxiliar(ea)← vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 82 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vértice final1 Borrar las aristas incidentes a vi de T2 Sea e la arista directamente arriba de vi en T3 Si auxiliar(e) es un vértice de combinación entonces inserta una
diagonal entre vi y el auxiliar(e) en D
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 83 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vértice de división1 Sea e la arista directamente arriba de vi en T2 Insertar una diagonal entre vi y el auxiliar(e) en D3 Agregar las aristas ea y eb incidentes a vi en T4 auxiliar(eb)← vi
5 auxiliar(e)← vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 84 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vértice de combinación1 Borrar las aristas incidentes a vi de T2 Sea e la arista directamente arriba de vi en T3 Si auxiliar(e) es un vértice de combinación entonces inserta una
diagonal entre vi y el auxiliar(e) en D4 auxiliar(e)← vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 85 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vértice regular (interior del polígono arriba)1 Reemplazar la arista izquierda incidente a vi con la derecha en T2 Sea e la arista directamente arriba de vi en T3 Si auxiliar(e) es un vértice de combinación entonces inserta una
diagonal entre vi y el auxiliar(e) en D4 auxiliar(e)← vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 86 / 105
Triangulación de polígonos División de un polígono en subpolígonos monótonos
División de un polígono en subpolígonos monótonos
Vértice regular (interior del polígono abajo)1 Reemplazar la arista izquierda ea incidente a vi con la derecha eb
en T2 Sea e la arista directamente arriba de vi en T3 Si auxiliar(e) es un vértice de combinación entonces inserta una
diagonal entre vi y el auxiliar(e) en D4 auxiliar(eb)← vi
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 87 / 105
Triangulación de polígonos Ejemplo
1 Triangulación de polígonosProblema de triangulación de polígonosPolígonos monótonosTriangulación de polígonos monótonosDivisión de un polígono en subpolígonos monótonosEjemplo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulación de polígonos 26 de febrero del 2013 88 / 105
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
∅
DPolígono P
Inicialización
Se almacenaP enDSe construyeQ con los vértices deP ordenados por coordenadas xSe inicializa el estatus de la línea de barrido T a vacío
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
→ e4 v5e5
DPolígono P
Vértice de inicio
Insertar sus aristas incidentes ea y eb en el estatus de la línea de barrido Tauxiliar(ea)← vi
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
→ e2 v3e3e4 v5e5
DPolígono P
Vértice de inicio
Insertar sus aristas incidentes ea y eb en el estatus de la línea de barrido Tauxiliar(ea)← vi
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
→ e2 v3 v4e3e4 v5e5
DPolígono P
Vértice de combinación
Borrar las aristas incidentes a vi de TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enDauxiliar(e)← vi
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
→ e2 v4 v6e5 e6
DPolígono P
v6v4
Vértice regular (interior del polígono arriba)
Reemplazar la arista izquierda incidente a vi con la derecha en TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enDauxiliar(e)← vi
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
→ e15 v1e1e2 v6e6
DPolígono P
v6v4
Vértice de inicio
Insertar sus aristas incidentes ea y eb en el estatus de la línea de barrido Tauxiliar(ea)← vi
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
e15 v1e1
→ e2 v6 v7e6 e7
DPolígono P
v6v4
Vértice regular (interior del polígono arriba)
Reemplazar la arista izquierda incidente a vi con la derecha en TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enDauxiliar(e)← vi
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
e15 v1e1e2 v7e7
→ e8 v9e9
DPolígono P
v6v4
Vértice de inicio
Insertar sus aristas incidentes ea y eb en el estatus de la línea de barrido Tauxiliar(ea)← vi
v2v3
v4
v5
v7
v6
v8
v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
Tei aux(ei)
→ e15 v1 v2e1e2 v7e7e8 v9e9
DPolígono P
v6v4
Vértice de combinación
Borrar las aristas incidentes a vi de TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enDauxiliar(e)← vi
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14 v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
→ e15 v2 v8e7e8 v9e9
DPolígono P
v6v4v8v2
Vértice de combinación
Borrar las aristas incidentes a vi de TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enDauxiliar(e)← vi
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14
v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
→ e15 v8 v14e14
→ e13 v14e9
DPolígono P
v6v4v8v2
v14v8
Vértice de división
Sea e la arista directamente arriba de vi en TInsertar una diagonal entre vi y el auxiliar(e) enDAgregar las aristas ea y eb incidentes a vi en Tauxiliar(eb)← viauxiliar(e)← vi
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14
v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
e15 v14e14e13 v14e9
DPolígono P
v6v4v8v2
v14v8
Vértice final
Borrar las aristas incidentes a vi de TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enD
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14
v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
→ e13 v14 v10e9 e10
DPolígono P
v6v4v8v2
v14v8
Vértice regular (interior del polígono arriba)
Reemplazar la arista izquierda incidente a vi con la derecha en TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enDauxiliar(e)← vi
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14
v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
→ e13 v10 v12e12
→ e11 v12e10
DPolígono P
v6v4v8v2
v14v8v12v10
Vértice de división
Sea e la arista directamente arriba de vi en TInsertar una diagonal entre vi y el auxiliar(e) enDAgregar las aristas ea y eb incidentes a vi en Tauxiliar(eb)← viauxiliar(e)← vi
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14
v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
e13 v12e12e11 v12e10
DPolígono P
v6v4v8v2
v14v8v12v10
Vértice final
Borrar las aristas incidentes a vi de TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enD
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14
v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
e13 v12e12
DPolígono P
v6v4v8v2
v14v8v12v10
Vértice final
Borrar las aristas incidentes a vi de TSea e la arista directamente arriba de vi en TSi auxiliar(e) es un vértice de combinación entonces inserta una diagonal entre vi y el auxiliar(e) enD
v2v3
v4
v5
v7
v6v9
v11
v12
v14
v15e1e15
e2
e4
e3
e5e6
e7
e8
e9
e10
e11
e12e13
e14
v13
v10
v1
FinalInicio Division CombinacionRegularRegular
v8
Tei aux(ei)
∅
DPolígono P
v6v4v8v2
v14v8v12v10
Finalización
Todos los vértices enQ han sido procesadosSe devuelve la subdivisión deP en subpolígonos monótonos almacenada enD como resultado