geometria computacional prof. walter mascarenhas segundo semestre de 2004 aula 6
TRANSCRIPT
![Page 1: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/1.jpg)
Geometria Computacional
Prof. Walter Mascarenhas
Segundo semestre de 2004
Aula 6
![Page 2: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/2.jpg)
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)
![Page 3: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/3.jpg)
Vértices reflexos e cúspides internasUm 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.
![Page 4: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/4.jpg)
Partição em trapéziosUm 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
![Page 5: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/5.jpg)
Método da scanline
![Page 6: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/6.jpg)
Poligonais estritamente monótonasUma poligonal P é estritamente monótona com respeito à uma reta r se toda perpendicular à r corta P em no máximo um ponto
![Page 7: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/7.jpg)
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
![Page 8: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/8.jpg)
Observação
![Page 9: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/9.jpg)
Polígonos monótonosUma 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
![Page 10: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/10.jpg)
Conseqüência da observação passada
![Page 11: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/11.jpg)
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:
![Page 12: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/12.jpg)
Porque o lema é correto
![Page 13: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/13.jpg)
Porque é chato provar o lema
![Page 14: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/14.jpg)
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 simples
3- Polígonos com “mínimos locais” mais para cima são mais simples
![Page 15: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/15.jpg)
Se não der para simplificar então há cúspides
![Page 16: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/16.jpg)
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
![Page 17: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/17.jpg)
Prova
![Page 18: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/18.jpg)
Prova
![Page 19: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/19.jpg)
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 diagonal
2- 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
![Page 20: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/20.jpg)
De trapezóides para partes monótonas:
![Page 21: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/21.jpg)
Triangulando polígonos monótonos em O(n)
![Page 22: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/22.jpg)
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
![Page 23: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/23.jpg)
Triangulando polígonos monótonos em O(n)
A remoção de vértices convexos é recursiva, até que restem apenas vértices reversos.
![Page 24: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/24.jpg)
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.
![Page 25: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/25.jpg)
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.
![Page 26: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/26.jpg)
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).
![Page 27: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/27.jpg)
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.
![Page 28: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/28.jpg)
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.
![Page 29: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/29.jpg)
O vértice anterior ao 3, o 2, é reverso: coloco o 3 na coluna de pendências e movo o cursor para o 4.
![Page 30: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/30.jpg)
O vértice 3 é convexo: formo o triângulo 2-3-4, coloco 3 na coluna “Triang” e mantenho o cursor em 4.
![Page 31: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/31.jpg)
O vértice anterior ao 4, o 2, é reverso: coloco o 4 na coluna de pendências e movo o cursor para 5.
![Page 32: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/32.jpg)
O vértice anterior ao 5, o 4, é reverso: coloco o 5 na coluna de pendências e movo o cursor para 6.
![Page 33: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/33.jpg)
O vértice anterior ao 6, o 4, é reverso: insiro o 6 na coluna de pendências e movo o cursor para o 7.
![Page 34: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/34.jpg)
O vértice anterior ao 7, o 6, é reverso: insiro o 7 na coluna de pendências e movo o cursor para o 8.
![Page 35: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/35.jpg)
O vértice anterior ao 8, o 7, é reverso: insiro o 8 na coluna de pendências e movo o cursor para o 9.
![Page 36: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/36.jpg)
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.
![Page 37: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/37.jpg)
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.
![Page 38: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/38.jpg)
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.
![Page 39: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/39.jpg)
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.
![Page 40: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/40.jpg)
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.
![Page 41: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/41.jpg)
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).
![Page 42: Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6](https://reader036.vdocuments.pub/reader036/viewer/2022081515/552fc113497959413d8c70b2/html5/thumbnails/42.jpg)
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ígono
3- 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).