1 / 42

Geometria Computacional

Geometria Computacional. Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6. Triangulação em O(n logn).

myrrh
Download Presentation

Geometria Computacional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6

  2. Triangulação em O(n logn) 1- Ordene os pontos pela coordenada y O(n logn) 2- Decomponha o polígono em trapézios usando uma scanline O(n logn)3- Usando os trapézios, quebre o polígono em partes monótonas através da eliminação das cúspides internas O(n)4- Triangule as partes monótonas O(n)

  3. Vértices reflexos e cúspides internas Um vértice v de um polígono P é reflexo se o seu ângulo interno é estritamente maior que pi. Um vértice reflexo r é uma cúspide interna de P com relação à reta r se seus dois vizinhos estão contidos no mesmo semi-plano fechado definido pela paralela a r que passa por v.

  4. Partição em trapézios Um polígono particionado em trapézios (triângulos são trapézios degenerados.) Note que o lado inferior de cada trapézio contém exatamente um vértice e o superior também

  5. Método da scanline

  6. Poligonais estritamente monótonas Uma poligonal P é estritamente monótona com respeito à uma reta r se toda perpendicular à r corta P em no máximo um ponto

  7. Poligonais monótonas Uma poligonal P é monótona com respeito à uma reta r se toda perpendicular à r corta P em no máximo uma componente conexa

  8. Observação

  9. Polígonos monótonos Uma polígono é (estritamente) monótono com respeito à uma reta r se puder ser particionado em duas poligonais que são (estritamente) monótonas com respeito a r

  10. Conseqüência da observação passada

  11. Critério de não monotonicidade Lema: Um polígono P não monótono com relação a uma reta r contém pelo menos uma cúspide interna com relação a r.. A recíproca deste lema e versões mais fortes são falsas:

  12. Porque o lema é correto

  13. Porque é chato provar o lema

  14. Prova: simplifique o polígono 1- Polígonos com menos vértices são mais simples 2- Polígonos com “máximos locais” mais para baixo são mais simples3- Polígonos com “mínimos locais” mais para cima são mais simples

  15. Se não der para simplificar então há cúspides

  16. Prova 1- Remova todos os máximos locais com pelo menos um vizinho acima da reta “crítica” 2- Remova todos os mínimos locais com pelo menos um vizinho abaixo da reta crítica..3- Os vértices do polígono resultante não podem ter os dois vizinhos em lados opostos da reta crítica!4- O polígono resultante é um ``zig zag’’5- Dentre três vértices consecutivos em um zig-zag há uma cúspide

  17. Prova

  18. Prova

  19. De trapézios para partes monótonas: Basta remover as cúspides internas conectando-as da seguinte maneira:1- Uma cúspide interna que está no lado inferior de um trapézio é ligada ao vértice do polígono que está no lado superior do mesmo trapézio por uma diagonal2- Uma cúspide interna que está no lado superior de um trapézio é ligada ao vértice do polígono que está no lado inferior do mesmo trapézio por uma diagonal

  20. De trapezóides para partes monótonas:

  21. Triangulando polígonos monótonos em O(n)

  22. Triangulando polígonos monótonos em O(n) A partir do topo, escolha o lado no qual o segundo vértice (v) está mais baixo (esquerda neste caso). Percorra os vértices no lado oposto a v, removendo os vértices convexos, como indicado na figura

  23. Triangulando polígonos monótonos em O(n) A remoção de vértices convexos é recursiva, até que restem apenas vértices reversos.

  24. Triangulando polígonos monótonos em O(n) Após a remoção dos vértices convexos, os vértices restantes podem ser ligados a v, definindo triângulos. Após a remoção destes triângulos, o vértice do topo é atualizado.

  25. Triangulando polígonos monótonos em O(n) O processo requer O(n) operações pois cada triângulo é determinado em O(1) operações e, como já vimos, toda triangulação tem n - 2 triângulos.

  26. Contando o número de operações Para contar as operações montaremos uma planilha com duas colunas: uma listará os vértices pendentes e a outra conterá os vértices “externos” em triângulos removidos. A cada passo atualizaremos o “cursor” (em vermelho).

  27. Contando o número de operações No primeiro passo verificamos qual dos vizinhos do vértice 1 está mais abaixo, inserimos o vértice 1 na lista de pendências e movemos o cursor para o vizinho mais baixo.

  28. Como o vértice anterior ao 2 é o 1 e o vértice 3 está acima do 11, coloco o 2 na coluna de pendências e movo o cursor para o 3.

  29. O vértice anterior ao 3, o 2, é reverso: coloco o 3 na coluna de pendências e movo o cursor para o 4.

  30. O vértice 3 é convexo: formo o triângulo 2-3-4, coloco 3 na coluna “Triang” e mantenho o cursor em 4.

  31. O vértice anterior ao 4, o 2, é reverso: coloco o 4 na coluna de pendências e movo o cursor para 5.

  32. O vértice anterior ao 5, o 4, é reverso: coloco o 5 na coluna de pendências e movo o cursor para 6.

  33. O vértice anterior ao 6, o 4, é reverso: insiro o 6 na coluna de pendências e movo o cursor para o 7.

  34. O vértice anterior ao 7, o 6, é reverso: insiro o 7 na coluna de pendências e movo o cursor para o 8.

  35. O vértice anterior ao 8, o 7, é reverso: insiro o 8 na coluna de pendências e movo o cursor para o 9.

  36. O vértice anterior ao 9, o 8, é convexo: monto o triângulo 7-8-9, insiro o 8 na coluna “Triang” e mantenho o cursor no 9.

  37. O vértice anterior ao 9, o 7, é convexo: monto o triângulo 6-7-9, insiro o 7 na coluna “Triang” e mantenho o cursor no 9.

  38. O vértice anterior ao 9, o 6, é convexo: monto o triângulo 4-6-9, insiro o 6 na coluna “Triang” e mantenho o cursor no 9.

  39. O vértice anterior ao 9, o 4, é convexo: monto o triângulo 2-4-9, insiro o 4 na coluna “Triang” e mantenho o cursor no 9.

  40. O vértice anterior ao 9, o 2, é convexo: monto o triângulo 1-2-9, insiro o 2 na coluna “Triang” e mantenho o cursor no 9.

  41. O vértice anterior ao 9 é o 1 e o vértice 10 está abaixo do 11: monto o triângulo 9-1-11, insiro o 1 na coluna “Triang” e repito o processo para os vértices abaixo do 9 (note que estamos numa situação similar à que estávamos ao analisar o vértice 1).

  42. Estimativa final do número de operações 1- A cada passo inserimos alguém ou na coluna de pendências ou na de triângulos. Cada passo requer O(1) operações. Logo o número de operações é da ordem do número de elementos na duas colunas.2- Cada vértice só é inserido uma vez na coluna de triângulos, pois no momento da inserção ele é removido do polígono3- Cada vértice só é inserido uma vez na coluna de pendências, no momento em que o cursor se move dele para um vértice inferior.Conclusão: o número de operações é da ordem é O(2n) = O(n).

More Related