comp-420
Triangulacin de polgonos
Triangulacin: descomposicin de un polgono simple en tringulos.
Cualquier triangulacin de un polgono simple con n vertices tiene n-2
tringulos.
El algoritmo ms simple, llamado de corte de orejas (ear clipping) es de
orden O(n2).
El mtodo antes visto para particionar polgonos en partes monotonas es
til porque podemos triangularlas con complejidad O(n).
convex
reflex
Vertices reflex R = { 2, 5, 7, 8 }
Vertices convex C = { 0, 1, 3, 4, 6, 9 }
Vertices oreja E = { 3, 4, 6, 9 }
3
6
9
5
8
Vertices reflex R = { 2, 5, 7, 8 }
Vertices oreja E = { 3, 4, 6, 9 }
2
3
1
Eliminar oreja 3 :
Primer triangulo en la triangulacin T0 =
2, 3, 4.
Triangulacin de un polgono
monnoto
Sea P un polgono montono respecto a y con n vrtices.
Suponemos que P es estrictamente montono (que no contiene aristas
horizontales)
Siempre podemos ir hacia abajo al caminar en las fronteras izquierda o
derecha del polgono a partir del vrtice ms alto de P hasta el ms bajo.
Podemos seguir a P desde arriba hacia abajo en ambas cadenas en su
frontera agregando diagonales cuando sea posible.
Este es un algoritmo glotn: conectamos la mayor parte de vrtices
posible con diagonales en cada iteracin.
Triangulacin de un polgono
monnoto
El algoritmo maneja los vrtices en orden decreciente de su coordenada y.
Se requiere una estructura auxiliar: una pila (stack)
Inicialmente, esta pila est vaca, luego contiene los vrtices de P que se
han encontrado (al paso de la lnea de barrido) pero que necesitan ms
diagonales.
Al manejar un vrtice se le aaden tantas diagonales con los vrtices de la
pila como sea posible.
Estas diagonales dividen al polgono en tringulos.
El vrtice ms bajo ser el que est arriba en la pila.
Triangulacin de un polgono
monnoto
not contain horizontal edges. Thus we always go down when we walk on the
left or right boundary chain of P from the highest vertex of P to the lowest
POLYGON TRIANGULATION
one. This is the property that makes triangulating a monotone polygon easy:
top toque
bottom
both chains, adding
our way
through P from
La porcin de P que we
nocanhawork
sido
triangulada
pero
seonencuentra
arriba
diagonals whenever this is possible. Next we describe the details of this greedy
del ltimo vrtice visitado
tiene forma de embudo.
triangulation algorithm.
Chapter 3
triangles
split off
not yet
triangulated
popped
triangulation algorithm.
pushed
pushed
Triangulacin de un polgono
monnoto
has been done we push v j onto the stack. In both cases the invariant is restored:
one side of the funnel is bounded by a part of a single edge, and the other side
is bounded by a chain of reflex vertices. We get the following algorithm. (The
algorithm is actually similar to the convex hull algorithm of Chapter 1.)
0
1
2
3
4
5
7
10
11
12
13
14
15
16
18
17
19
21
20
22
23
24
1
2
2
3
3
4
7
8
10
10
11
12
13
14
11
12
13
15
14
16
18
17
15
16
18
17
19
19
20
21
20
21
22
22
23
23
24
24
1
2
2
3
3
4
7
8
10
10
11
11
12
14 15
13
12
14 15
13
16
16
18
17
18
17
19
21
19
20
21
22
20
22
23
23
24
24
Triangulacin de un polgono
monnoto
El paso 1 toma tiempo lineal
El paso 2 toma tiempo constante
El ciclo for se ejecuta n-3 veces, una ejecucin puede tomar tiempo lineal.
En cada ejecucin del ciclo for se insertan a lo ms dos vrtices en el
stack, entonces el nmero total de inserciones en el algoritmo est
acotado por 2n-4.
Como el nmero de operaciones pop no puede exceder el nmero de
operaciones push, el tiempo total de ejecuciones para el ciclo for es O(n).
El ltimo paso del algoritmo toma a lo ms tiempo lineal.
El algoritmo se ejecuta en O(n).