Polígono - INF2604 Geometria Computacional

55
Pol´ ıgono INF2604 – Geometria Computacional Waldemar Celes [email protected] Departamento de Inform´ atica, PUC-Rio W. Celes Pol´ ıgono 1

Transcript of Polígono - INF2604 Geometria Computacional

Page 1: Polígono - INF2604 Geometria Computacional

PolıgonoINF2604 – Geometria Computacional

Waldemar [email protected]

Departamento de Informatica, PUC-Rio

W. Celes Polıgono 1

Page 2: Polígono - INF2604 Geometria Computacional

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

Page 3: Polígono - INF2604 Geometria Computacional

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

Page 4: Polígono - INF2604 Geometria Computacional

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

Page 5: Polígono - INF2604 Geometria Computacional

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

Page 6: Polígono - INF2604 Geometria Computacional

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

Page 7: Polígono - INF2604 Geometria Computacional

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

Page 8: Polígono - INF2604 Geometria Computacional

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

Page 9: Polígono - INF2604 Geometria Computacional

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

Page 10: Polígono - INF2604 Geometria Computacional

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

Page 11: Polígono - INF2604 Geometria Computacional

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

Page 12: Polígono - INF2604 Geometria Computacional

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

Page 13: Polígono - INF2604 Geometria Computacional

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

Page 14: Polígono - INF2604 Geometria Computacional

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

Page 15: Polígono - INF2604 Geometria Computacional

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

Page 16: Polígono - INF2604 Geometria Computacional

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

Page 17: Polígono - INF2604 Geometria Computacional

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

Page 18: Polígono - INF2604 Geometria Computacional

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

Page 19: Polígono - INF2604 Geometria Computacional

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

Page 20: Polígono - INF2604 Geometria Computacional

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

Page 21: Polígono - INF2604 Geometria Computacional

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

Page 22: Polígono - INF2604 Geometria Computacional

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

Page 23: Polígono - INF2604 Geometria Computacional

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

Page 24: Polígono - INF2604 Geometria Computacional

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

Page 25: Polígono - INF2604 Geometria Computacional

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

Page 26: Polígono - INF2604 Geometria Computacional

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

Page 27: Polígono - INF2604 Geometria Computacional

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

Page 28: Polígono - INF2604 Geometria Computacional

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

Page 29: Polígono - INF2604 Geometria Computacional

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

Page 30: Polígono - INF2604 Geometria Computacional

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

Page 31: Polígono - INF2604 Geometria Computacional

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

Page 32: Polígono - INF2604 Geometria Computacional

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

Page 33: Polígono - INF2604 Geometria Computacional

“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

Page 34: Polígono - INF2604 Geometria Computacional

“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

Page 35: Polígono - INF2604 Geometria Computacional

“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

Page 36: Polígono - INF2604 Geometria Computacional

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

Page 37: Polígono - INF2604 Geometria Computacional

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

Page 38: Polígono - INF2604 Geometria Computacional

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

Page 39: Polígono - INF2604 Geometria Computacional

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

Page 40: Polígono - INF2604 Geometria Computacional

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

Page 41: Polígono - INF2604 Geometria Computacional

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

Page 42: Polígono - INF2604 Geometria Computacional

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

Page 43: Polígono - INF2604 Geometria Computacional

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

Page 44: Polígono - INF2604 Geometria Computacional

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

Page 45: Polígono - INF2604 Geometria Computacional

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

Page 46: Polígono - INF2604 Geometria Computacional

Monoticidade

Funcao monotona

I Nunca decrescente ou nunca crescente

W. Celes Polıgono 19

Page 47: Polígono - INF2604 Geometria Computacional

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

Page 48: Polígono - INF2604 Geometria Computacional

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

Page 49: Polígono - INF2604 Geometria Computacional

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

Page 50: Polígono - INF2604 Geometria Computacional

Triangulacao

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

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

Page 51: Polígono - INF2604 Geometria Computacional

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

Page 52: Polígono - INF2604 Geometria Computacional

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

Page 53: Polígono - INF2604 Geometria Computacional

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

Page 54: Polígono - INF2604 Geometria Computacional

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

Page 55: Polígono - INF2604 Geometria Computacional

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