Polígono - INF2604 Geometria Computacional

Post on 12-Jul-2022

1 views 0 download

Transcript of Polígono - INF2604 Geometria Computacional

PolıgonoINF2604 – Geometria Computacional

Waldemar Celesceles@inf.puc-rio.br

Departamento de Informatica, PUC-Rio

W. Celes Polıgono 1

Polıgonos

Polıgonos sao empregados para representacao de objetos reais

I Boa representacao

I Facil manipulacao computacional

Definicao:I Polıgono e uma regiao do plano delimitada por uma sequencia

de segmentos de reta formando uma curva simples fechadaI Curva simples fechada e homeomorfa a um cırculo

W. Celes Polıgono 2

Polıgonos

Polıgonos sao empregados para representacao de objetos reais

I Boa representacao

I Facil manipulacao computacional

Definicao:I Polıgono e uma regiao do plano delimitada por uma sequencia

de segmentos de reta formando uma curva simples fechadaI Curva simples fechada e homeomorfa a um cırculo

W. Celes Polıgono 2

Polıgonos

Representacao:

P = {e0 = v0v1, e1 = v1v2, ..., en−1 = vn−1v0}

com

{ei ∩ ei+1 = vi+1

ei ∩ ej = ∅, se j 6= i + 1

v0

v1

v3

· · ·vn�1

W. Celes Polıgono 3

Polıgonos

Teorema de JordanI A fronteira ∂P de um polıgono P particiona o plano em duas

partes: o interior limitado e o exterior ilimitado

Classificacao de pontoI A partir de um ponto p, traca-se um raio nao paralelo as

arestas e conta-se o numero n de intersecoes com ∂PI Se n for par, ponto e exterior ao polıgonoI Se n for ımpar, ponto e interior ao polıgono

v0

v1

v3

· · ·vn�1

p

1 2 3

W. Celes Polıgono 4

Polıgonos

Teorema de JordanI A fronteira ∂P de um polıgono P particiona o plano em duas

partes: o interior limitado e o exterior ilimitado

Classificacao de pontoI A partir de um ponto p, traca-se um raio nao paralelo as

arestas e conta-se o numero n de intersecoes com ∂PI Se n for par, ponto e exterior ao polıgonoI Se n for ımpar, ponto e interior ao polıgono

v0

v1

v3

· · ·vn�1

p

1 2 3

W. Celes Polıgono 4

Visibilidade

Problema de KleeI Considerando que um polıgono representa a planta baixa de

um museu, quantos guardas sao necessarios para vigiar omuseu, para que qualquer a area do museu seja visıvel a pelomenos um guarda?

I Considerando:I Guardas estacionariosI Guardas com visao 2π

VisibilidadeI O ponto y e visıvel a x se:

I xy ⊆ P

I O ponto y e claramente visıvel a x se:I xy ⊆ PI xy ∩ ∂P ⊆ {x, y}

W. Celes Polıgono 5

Visibilidade

Problema de KleeI Considerando que um polıgono representa a planta baixa de

um museu, quantos guardas sao necessarios para vigiar omuseu, para que qualquer a area do museu seja visıvel a pelomenos um guarda?

I Considerando:I Guardas estacionariosI Guardas com visao 2π

VisibilidadeI O ponto y e visıvel a x se:

I xy ⊆ P

I O ponto y e claramente visıvel a x se:I xy ⊆ PI xy ∩ ∂P ⊆ {x, y}

W. Celes Polıgono 5

Problema de Klee

Achar uma funcao g(n) que expressa a quantidade de guardasnecessaria em funcao do numero de vertices do polıgono

I Em 2D, claramente 1 ≤ g(n) ≤ nI Por inducao:

I Para n = 3, g(n) = 1 (obvio!)

I Para n = 4:I Quadrilatero convexo: g(n) = 1I Quadrilatero concavo (∃θ > π): g(n) = 1

I Para n = 5:I Convexo ou com 1 vertice concavo: g(n) = 1I Com 2 vertices consecutivos concavos: g(n) = 1I Com 2 vertices nao consecutivos concavos: g(n) = 1

I Para n = 6:I Com formacao de 2 aletas: requer g(n) = 2

W. Celes Polıgono 6

Problema de Klee

Achar uma funcao g(n) que expressa a quantidade de guardasnecessaria em funcao do numero de vertices do polıgono

I Em 2D, claramente 1 ≤ g(n) ≤ nI Por inducao:

I Para n = 3, g(n) = 1 (obvio!)I Para n = 4:

I Quadrilatero convexo: g(n) = 1I Quadrilatero concavo (∃θ > π):

g(n) = 1

I Para n = 5:I Convexo ou com 1 vertice concavo: g(n) = 1I Com 2 vertices consecutivos concavos: g(n) = 1I Com 2 vertices nao consecutivos concavos: g(n) = 1

I Para n = 6:I Com formacao de 2 aletas: requer g(n) = 2

W. Celes Polıgono 6

Problema de Klee

Achar uma funcao g(n) que expressa a quantidade de guardasnecessaria em funcao do numero de vertices do polıgono

I Em 2D, claramente 1 ≤ g(n) ≤ nI Por inducao:

I Para n = 3, g(n) = 1 (obvio!)I Para n = 4:

I Quadrilatero convexo: g(n) = 1I Quadrilatero concavo (∃θ > π): g(n) = 1

I Para n = 5:I Convexo ou com 1 vertice concavo: g(n) = 1I Com 2 vertices consecutivos concavos: g(n) = 1I Com 2 vertices nao consecutivos concavos: g(n) = 1

I Para n = 6:I Com formacao de 2 aletas: requer g(n) = 2

W. Celes Polıgono 6

Problema de Klee

Achar uma funcao g(n) que expressa a quantidade de guardasnecessaria em funcao do numero de vertices do polıgono

I Em 2D, claramente 1 ≤ g(n) ≤ nI Por inducao:

I Para n = 3, g(n) = 1 (obvio!)I Para n = 4:

I Quadrilatero convexo: g(n) = 1I Quadrilatero concavo (∃θ > π): g(n) = 1

I Para n = 5:I Convexo ou com 1 vertice concavo: g(n) = 1I Com 2 vertices consecutivos concavos:

g(n) = 1I Com 2 vertices nao consecutivos concavos: g(n) = 1

I Para n = 6:I Com formacao de 2 aletas: requer g(n) = 2

W. Celes Polıgono 6

Problema de Klee

Achar uma funcao g(n) que expressa a quantidade de guardasnecessaria em funcao do numero de vertices do polıgono

I Em 2D, claramente 1 ≤ g(n) ≤ nI Por inducao:

I Para n = 3, g(n) = 1 (obvio!)I Para n = 4:

I Quadrilatero convexo: g(n) = 1I Quadrilatero concavo (∃θ > π): g(n) = 1

I Para n = 5:I Convexo ou com 1 vertice concavo: g(n) = 1I Com 2 vertices consecutivos concavos: g(n) = 1I Com 2 vertices nao consecutivos concavos:

g(n) = 1

I Para n = 6:I Com formacao de 2 aletas: requer g(n) = 2

W. Celes Polıgono 6

Problema de Klee

Achar uma funcao g(n) que expressa a quantidade de guardasnecessaria em funcao do numero de vertices do polıgono

I Em 2D, claramente 1 ≤ g(n) ≤ nI Por inducao:

I Para n = 3, g(n) = 1 (obvio!)I Para n = 4:

I Quadrilatero convexo: g(n) = 1I Quadrilatero concavo (∃θ > π): g(n) = 1

I Para n = 5:I Convexo ou com 1 vertice concavo: g(n) = 1I Com 2 vertices consecutivos concavos: g(n) = 1I Com 2 vertices nao consecutivos concavos: g(n) = 1

I Para n = 6:I Com formacao de 2 aletas: requer g(n) = 2

W. Celes Polıgono 6

Problema de Klee

Achar uma funcao g(n) que expressa a quantidade de guardasnecessaria em funcao do numero de vertices do polıgono

I Em 2D, claramente 1 ≤ g(n) ≤ nI Por inducao:

I Para n = 3, g(n) = 1 (obvio!)I Para n = 4:

I Quadrilatero convexo: g(n) = 1I Quadrilatero concavo (∃θ > π): g(n) = 1

I Para n = 5:I Convexo ou com 1 vertice concavo: g(n) = 1I Com 2 vertices consecutivos concavos: g(n) = 1I Com 2 vertices nao consecutivos concavos: g(n) = 1

I Para n = 6:I Com formacao de 2 aletas: requer g(n) = 2

W. Celes Polıgono 6

Problema de Klee

Numero de guardas g(n)I Para n ≥ 6:

I Forma-se k aletas com 3k verticesI Logo, pode requerer: g(n) = k;

ainda, como para n = 3, 4, 5 tem-se g(n) = 1;entao, intuitivamente tem-se g(n) = bn/3c

Pergunta: bn/3c e suficiente?

W. Celes Polıgono 7

Problema de Klee

Numero de guardas g(n)I Para n ≥ 6:

I Forma-se k aletas com 3k verticesI Logo, pode requerer: g(n) = k;

ainda, como para n = 3, 4, 5 tem-se g(n) = 1;entao, intuitivamente tem-se g(n) = bn/3c

Pergunta: bn/3c e suficiente?

W. Celes Polıgono 7

Diagonal

Diagonal de PI Segmento de reta que conecta 2 vertices de P, vivj , tal que:

{vivj ⊆ P

vivj ∩ ∂P = {vi , vj}

I Diagonais que nao se cruzamI Diagonais que se cruzam

W. Celes Polıgono 8

Diagonal

Diagonal de PI Segmento de reta que conecta 2 vertices de P, vivj , tal que:

{vivj ⊆ P

vivj ∩ ∂P = {vi , vj}

I Diagonais que nao se cruzamI Diagonais que se cruzam

W. Celes Polıgono 8

Triangulacao

Triangulacao de PI Decomposicao de P em triangulos atraves de um conjunto

maximo de diagonais que nao se cruzamI P pode ter diferentes triangulacoes

W. Celes Polıgono 9

Triangulacao

Todo polıgono P com n > 3 tem uma diagonal?

I Sim!I Considere o vertice mais abaixo: vi tal que viy = ymin

I Vertices vizinhos formam uma diagonal: vi−1vi+1

I Existe um vertice vk interior ao triangulo vi−1vivi+1;nesse caso, vivk e diagonal

Por inducao, todo polıgono tem uma triangulacao

I Isso nao se estende para 3D!

W. Celes Polıgono 10

Triangulacao

Todo polıgono P com n > 3 tem uma diagonal?I Sim!

I Considere o vertice mais abaixo: vi tal que viy = ymin

I Vertices vizinhos formam uma diagonal: vi−1vi+1

I Existe um vertice vk interior ao triangulo vi−1vivi+1;nesse caso, vivk e diagonal

Por inducao, todo polıgono tem uma triangulacao

I Isso nao se estende para 3D!

W. Celes Polıgono 10

Triangulacao

Todo polıgono P com n > 3 tem uma diagonal?I Sim!

I Considere o vertice mais abaixo: vi tal que viy = ymin

I Vertices vizinhos formam uma diagonal: vi−1vi+1

I Existe um vertice vk interior ao triangulo vi−1vivi+1;nesse caso, vivk e diagonal

Por inducao, todo polıgono tem uma triangulacao

I Isso nao se estende para 3D!

W. Celes Polıgono 10

Triangulacao

Todo polıgono P com n > 3 tem uma diagonal?I Sim!

I Considere o vertice mais abaixo: vi tal que viy = ymin

I Vertices vizinhos formam uma diagonal: vi−1vi+1

I Existe um vertice vk interior ao triangulo vi−1vivi+1;nesse caso, vivk e diagonal

Por inducao, todo polıgono tem uma triangulacao

I Isso nao se estende para 3D!

W. Celes Polıgono 10

Triangulacao

Todo polıgono P com n > 3 tem uma diagonal?I Sim!

I Considere o vertice mais abaixo: vi tal que viy = ymin

I Vertices vizinhos formam uma diagonal: vi−1vi+1

I Existe um vertice vk interior ao triangulo vi−1vivi+1;nesse caso, vivk e diagonal

Por inducao, todo polıgono tem uma triangulacao

I Isso nao se estende para 3D!

W. Celes Polıgono 10

Propriedades da triangulacao

Toda triangulacao de P tem:I n − 3 diagonaisI n − 2 triangulos

Prova por inducao:I Para n = 3, a deducao e trivialI Para n > 3, sabendo que se tem a prova para n − 1 vertices:

I Uma diagonal qualquer particiona o polıgono em doissubpolıgonos P1 e P2

I n1 + n2 = n + 2, ja que dois vertices sao compartilhadosI Como por inducao P1 e P2 tem n1 − 2 e n2 − 2 triangulos,

respectivamente:

(n1 − 2) + (n2 − 2) = (n1 + n2)− 4 = (n + 2)− 4 = n − 2

I Similarmente, o numero de diagonais e:

(n1 − 3) + (n2 − 3) + 1 = n − 3

onde + 1 e devido a diagonal que particiona P

W. Celes Polıgono 11

Propriedades da triangulacao

Toda triangulacao de P tem:I n − 3 diagonaisI n − 2 triangulos

Prova por inducao:I Para n = 3, a deducao e trivialI Para n > 3, sabendo que se tem a prova para n − 1 vertices:

I Uma diagonal qualquer particiona o polıgono em doissubpolıgonos P1 e P2

I n1 + n2 = n + 2, ja que dois vertices sao compartilhadosI Como por inducao P1 e P2 tem n1 − 2 e n2 − 2 triangulos,

respectivamente:

(n1 − 2) + (n2 − 2) = (n1 + n2)− 4 = (n + 2)− 4 = n − 2

I Similarmente, o numero de diagonais e:

(n1 − 3) + (n2 − 3) + 1 = n − 3

onde + 1 e devido a diagonal que particiona P

W. Celes Polıgono 11

Propriedades da triangulacao

A soma dos angulos internos de um polıgono P vale (n − 2)π

I Prova: cada triangulo contribui com π; como existe n − 2triangulos, tem-se o total de (n − 2)π

✓0✓1

✓2

X✓i = ⇡

W. Celes Polıgono 12

Propriedades da triangulacao

A soma dos angulos internos de um polıgono P vale (n − 2)π

I Prova: cada triangulo contribui com π; como existe n − 2triangulos, tem-se o total de (n − 2)π

✓0✓1

✓2

X✓i = ⇡

W. Celes Polıgono 12

Grafo dual da triangulacao

Dada uma triangulacao, o grafo dual e construıdo fazendo:

I Cada triangulo e um no do grafo

I Cada diagonal compartilhada por dois triangulose uma aresta ligando os dois nos correspondentes

I Grafo dual e uma arvore com grau maximo igual a 3I Cada triangulo tem no maximo 3 diagonais compartilhadasI Se tivesse um ciclo, o ciclo envolveria parte externa de P

I Se raiz tiver grau 1 ou 2, tem-se arvore binaria

W. Celes Polıgono 13

Grafo dual da triangulacao

Dada uma triangulacao, o grafo dual e construıdo fazendo:

I Cada triangulo e um no do grafo

I Cada diagonal compartilhada por dois triangulose uma aresta ligando os dois nos correspondentes

I Grafo dual e uma arvore com grau maximo igual a 3I Cada triangulo tem no maximo 3 diagonais compartilhadasI Se tivesse um ciclo, o ciclo envolveria parte externa de P

I Se raiz tiver grau 1 ou 2, tem-se arvore binaria

W. Celes Polıgono 13

Grafo dual da triangulacao

Dada uma triangulacao, o grafo dual e construıdo fazendo:

I Cada triangulo e um no do grafo

I Cada diagonal compartilhada por dois triangulose uma aresta ligando os dois nos correspondentes

I Grafo dual e uma arvore com grau maximo igual a 3I Cada triangulo tem no maximo 3 diagonais compartilhadasI Se tivesse um ciclo, o ciclo envolveria parte externa de P

I Se raiz tiver grau 1 ou 2, tem-se arvore binaria

W. Celes Polıgono 13

“Orelhas” de polıgonos

Orelha

I Uma sequencia de vertices consecutivos abc de P forma umaorelha se ac e uma diagonal

Tem-se:I Todo polıgono P com n > 3 tem pelo menos duas orelhas

I Orelhas sao folhas na arvore formada pelo grafo dual

W. Celes Polıgono 14

“Orelhas” de polıgonos

Orelha

I Uma sequencia de vertices consecutivos abc de P forma umaorelha se ac e uma diagonal

Tem-se:I Todo polıgono P com n > 3 tem pelo menos duas orelhas

I Orelhas sao folhas na arvore formada pelo grafo dual

W. Celes Polıgono 14

“Orelhas” de polıgonos

Orelha

I Uma sequencia de vertices consecutivos abc de P forma umaorelha se ac e uma diagonal

Tem-se:I Todo polıgono P com n > 3 tem pelo menos duas orelhas

I Orelhas sao folhas na arvore formada pelo grafo dual

W. Celes Polıgono 14

Coloracao de grafo

Considere o grafo da triangulacaoI Vertices da triangulacao sao nos do grafoI Arestas da triangulacao sao arestas do grafo

Tem-se:I 3 cores sao suficientes para colorir o grafo

I Cada vertice recebe uma cor,e nenhum vizinho direto tem a mesma cor

I Prova por inducao:I Para n = 3: obvioI Por inducao: retire uma orelha, ate n = 3, acrescente uma

orelha por vez, atribuindo ao vertice uma cor diferente dosvertices da diagonal da orelha.

Numero de guardas:I Um guarda em cada vertice de uma determinada cor

I A cor menos frequente ocorre, no maximo, bn/3c vezes

W. Celes Polıgono 15

Coloracao de grafo

Considere o grafo da triangulacaoI Vertices da triangulacao sao nos do grafoI Arestas da triangulacao sao arestas do grafo

Tem-se:I 3 cores sao suficientes para colorir o grafo

I Cada vertice recebe uma cor,e nenhum vizinho direto tem a mesma cor

I Prova por inducao:I Para n = 3: obvioI Por inducao: retire uma orelha, ate n = 3, acrescente uma

orelha por vez, atribuindo ao vertice uma cor diferente dosvertices da diagonal da orelha.

Numero de guardas:I Um guarda em cada vertice de uma determinada cor

I A cor menos frequente ocorre, no maximo, bn/3c vezes

W. Celes Polıgono 15

Coloracao de grafo

Considere o grafo da triangulacaoI Vertices da triangulacao sao nos do grafoI Arestas da triangulacao sao arestas do grafo

Tem-se:I 3 cores sao suficientes para colorir o grafo

I Cada vertice recebe uma cor,e nenhum vizinho direto tem a mesma cor

I Prova por inducao:I Para n = 3: obvioI Por inducao: retire uma orelha, ate n = 3, acrescente uma

orelha por vez, atribuindo ao vertice uma cor diferente dosvertices da diagonal da orelha.

Numero de guardas:I Um guarda em cada vertice de uma determinada cor

I A cor menos frequente ocorre, no maximo, bn/3c vezes

W. Celes Polıgono 15

Algoritmos de triangulacao

Por insercao de diagonaisI Ache uma diagonal de P

I Diagonal nao intercepta ∂PI Diagonal deve ser interna

I Divide P em P1 e P2

I Processe P1 e P2 recursivamente ate n = 3

Complexidade

I Numero de diagonais candidatas: O(n2)

I Determinacao se diagonal: ×O(n)

I Repeticao da computacao para cada n − 3 diagonais: ×O(n)

I Algoritmo completo: O(n4)

W. Celes Polıgono 16

Algoritmos de triangulacao

Por insercao de diagonaisI Ache uma diagonal de P

I Diagonal nao intercepta ∂PI Diagonal deve ser interna

I Divide P em P1 e P2

I Processe P1 e P2 recursivamente ate n = 3

Complexidade

I Numero de diagonais candidatas: O(n2)

I Determinacao se diagonal: ×O(n)

I Repeticao da computacao para cada n − 3 diagonais: ×O(n)

I Algoritmo completo: O(n4)

W. Celes Polıgono 16

Algoritmos de triangulacao

Por remocao de orelhaI Determine se cada vertice e uma orelha potencial

I Verifique se vi−1vi+1 e diagonal

I Remova uma orelhaI Atualize o estado dos vertices vi−1 e vi+1, apenasI A orelha e um dos triangulos resultantesI Repita ate n = 3

ComplexidadeI Computacao de orelhas potenciais: O(n2)

I n verticesI O(n) para testar cada diagonal

I Repeticao: O(n2)I n − 3 iteracoesI Em cada iteracao, apenas dois vertices sao atualizados: O(n)

I Algoritmo completo: O(n2)

W. Celes Polıgono 17

Algoritmos de triangulacao

Por remocao de orelhaI Determine se cada vertice e uma orelha potencial

I Verifique se vi−1vi+1 e diagonal

I Remova uma orelhaI Atualize o estado dos vertices vi−1 e vi+1, apenasI A orelha e um dos triangulos resultantesI Repita ate n = 3

ComplexidadeI Computacao de orelhas potenciais: O(n2)

I n verticesI O(n) para testar cada diagonal

I Repeticao: O(n2)I n − 3 iteracoesI Em cada iteracao, apenas dois vertices sao atualizados: O(n)

I Algoritmo completo: O(n2)

W. Celes Polıgono 17

Algoritmos de triangulacao

Por remocao de orelhaI Determine se cada vertice e uma orelha potencial

I Verifique se vi−1vi+1 e diagonal

I Remova uma orelhaI Atualize o estado dos vertices vi−1 e vi+1, apenasI A orelha e um dos triangulos resultantesI Repita ate n = 3

ComplexidadeI Computacao de orelhas potenciais: O(n2)

I n verticesI O(n) para testar cada diagonal

I Repeticao: O(n2)I n − 3 iteracoesI Em cada iteracao, apenas dois vertices sao atualizados: O(n)

I Algoritmo completo: O(n2)

W. Celes Polıgono 17

Algoritmos de triangulacao

Por remocao de orelhaI Determine se cada vertice e uma orelha potencial

I Verifique se vi−1vi+1 e diagonal

I Remova uma orelhaI Atualize o estado dos vertices vi−1 e vi+1, apenasI A orelha e um dos triangulos resultantesI Repita ate n = 3

ComplexidadeI Computacao de orelhas potenciais: O(n2)

I n verticesI O(n) para testar cada diagonal

I Repeticao: O(n2)I n − 3 iteracoesI Em cada iteracao, apenas dois vertices sao atualizados: O(n)

I Algoritmo completo: O(n2)

W. Celes Polıgono 17

Particionamento de polıgonos

Propriedades e outros particionamentos

I Polıgono monotono

I Triangulacao de polıgonos monotonos

I Particionamento em trapezios

W. Celes Polıgono 18

Monoticidade

Funcao monotona

I Nunca decrescente ou nunca crescente

W. Celes Polıgono 19

Polıgono monotono (ou monotonico)

Uma poligonal P e monotona em relacao a linha L se:

P ∩ L′ =

∅{v}{l}

, onde L′ ⊥ L

L

L0

Um polıgono P e dito monotono se:I ∂P pode ser dividido em duas poligonais monotonas

A

B

W. Celes Polıgono 20

Polıgono monotono (ou monotonico)

Uma poligonal P e monotona em relacao a linha L se:

P ∩ L′ =

∅{v}{l}

, onde L′ ⊥ L

L

L0

Um polıgono P e dito monotono se:I ∂P pode ser dividido em duas poligonais monotonas

A

B

W. Celes Polıgono 20

Monoticidade

PropriedadesI Monoticidade pode ser observada localmente em cada vertice

I Deteccao de estrutura local de monoticidade

I Vertices podem ser ordenados em relacao a linha demonoticidade

I Ordenacao O(n), basta seguir a cadeia de monoticidade

W. Celes Polıgono 21

Triangulacao

Triangulacao de polıgonos monotonos (O(n log n))

Figura extraıda de notas de aula de Subhash SuriW. Celes Polıgono 22

Particionamento em trapezios

Varredura de linha/planoI Tratar eventos discretos; no caso, ocorrencia de vertice

I Para ser eficiente, mantem-se uma lista de arestas “ativas”

a

b

c d

Troca c por d Retira c e d

a

b

c

d

Insere c e d

a

b

c

d

Direção de varredura

W. Celes Polıgono 23

Particionamento em trapezios

Varredura de linha/planoI Tratar eventos discretos; no caso, ocorrencia de vertice

I Para ser eficiente, mantem-se uma lista de arestas “ativas”

a

b

c d

Troca c por d Retira c e d

a

b

c

d

Insere c e d

a

b

c

d

Direção de varredura

W. Celes Polıgono 23

Triangulacao de polıgonos

Observacoes finais:

I A partir do particionamento em trapezios, pode-se decomporum polıgno qualquer em polıgonos monotonos

I Chazelle (1991) apresentou um algoritmo O(n) paratriangulacao de polıgonos

W. Celes Polıgono 24

Triangulacao de polıgonos

Observacoes finais:

I A partir do particionamento em trapezios, pode-se decomporum polıgno qualquer em polıgonos monotonos

I Chazelle (1991) apresentou um algoritmo O(n) paratriangulacao de polıgonos

W. Celes Polıgono 24

Exercıcio

Implemente um algoritmo de triangulacao de polıgonoI Dado um polıgono, exibir a lista de diagonais da triangulacao

I Considere como entrada uma lista de vertices no sentidoantihorario, armazenada em um arquivo com o seguinteformato:

0 x_0 y_0

1 x_1 y_1

2 x_2 y_n

...

n -1 x_n -1 y_n -1

I Como saıda, espera-se uma lista de pares de IDs de vertices,indicando as diagonais:

id_i id_j

...

W. Celes Polıgono 25