Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 5.

Slides:



Advertisements
Apresentações semelhantes
Geometria Computacional Fecho Convexo II
Advertisements

Ensino Superior Cálculo 2 3- Volume de Sólidos Amintas Paiva Afonso.
Geometria Computacional Galeria de Arte
ESTRUTURA DE DADOS LES.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Linguagem de Programação IX Métodos de Ordenação
PREENCHIMENTO DE POLÍGONOS
Aula 10 Algoritmos de Busca
Listas duplamente encadeadas
Trabalhando Figuras Planas No Graphmática
Árvores.
2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma.
Geometria Computacional Interseção de Segmentos
Interseção de Semiplanos
Geometria Computacional Fecho Convexo
Geometria Computacional Primitivas Geométricas
Decomposição Trapezoidal
Claudio Esperança Paulo Roma
Decomposição Trapezoidal
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ângulos formados entre retas
WAR STORY Stripping Triangulations Luciana Oliveira e Silva
GEOMETRIA PLANA QUADRILÁTEROS.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger.
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 6.
Geometria Plana – Quadriláteros Notáveis
Quadriláteros.
Aula 4: Matrizes e Operações Matriciais
Grandezas Físicas Prof. Climério Soares.
Algoritmos de varredura linear e busca de padrões
Matemática para Economia III
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
INTELIGÊNCIA ARTIFICIAL
Algorítmos e estrutura de dados III
Árvores Balanceadas Liliane Rose Benning Salgado.
Aula II – Ponto Prof. Zé Roque
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Grandezas Escalares e Vetoriais
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Aula de Matemática TRIÂNGULOS Razão de semelhança
Aula 10 Algoritmos de Busca
POLÍGONOS Professora Adriane.
POLÍGONO.
Ângulos formados entre retas
Equações do 1o grau com duas incógnitas
Prof. Edison Oliveira de Jesus
AULA 21 Profa. Sandra de Amo BCC - UFU
Computação Gráfica - Recorte
GEOMETRIA PLANA PARTE 3 Profº: Rodrigo barjonas.
Geometria Computacional Fecho Convexo
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 9.
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 3.
Exercícios de Fluxo em Redes
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 7.
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 2.
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004.
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 4.
E. E. São Francisco. Campo Grande, 08 de outubro de 2014.
Computação Gráfica - Recorte Profa. Mercedes Gonzales Márquez.
Prof. Edison Oliveira de Jesus
Árvores Balanceadas (AVL)
Métodos de Pesquisa: Sequencial e Binária
GEOMETRIA ANALITICA VETORES.
Volume de Prismas Retos
PLANOS DE PROJEÇÃO. GEOMETRIA DESCRITIVA
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
GEOMETRIA ângulos, polígonos e poliedros Profª Juliana Schivani docente.ifrn.edu.br/julianaschivani
Transcrição da apresentação:

Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 5

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)

Vértices reversos e cúspides internas Um vértice v de um polígono P é reverso se o seu ângulo interno é estritamente maior que pi. Um vértice reverso 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.

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

Método da scanline

Algoritmo: 1 - Entrada: Polígono 2- Saída: lista de trapezóides, onde struct Trapezoide { int ladoDireito; int ladoEsquerdo; int verticeInferior; int verticeSuperior; };

Algoritmo: 1 - Usar estrutura de dados que permita busca, inserção e remoção em O(log n) comparações para armazenar os lados cortados pela scanline 2- Armazenar os vértices em um vetor ordenado pela coordenada y. 3- For( i = 0; i < nVertices; i++) trateVertice(i)

A estrutura de dados que mantém os lados é ordenada assim: int compare(lado1, lado2) { x1 = xDoCorte(lado1,scanline); x2 = xDoCorte(lado2,scanline); if( x1 x2 ) return 1; return compareInclinacoes(lado1,lado2); } Importante: esta comparação não se altera quando a scanline move. Se dois lados estão na estrutura de dados em dois momentos diferentes, então o resultado da comparação será o mesmo nos dois instantes.

Trate vértice: 6 casos 1- Dois lados acima da scanline 1.1 Vértice reverso 1.2 Vértice convexo 2- Dois lados abaixo da scanline 2.1 Vértice reverso 2.2 Vértice convexo 3- Lados em lados opostos 3.1 Polígono à esquerda 3.2 Polígono à direita

1- Dois lados acima da scanline 1.1 Vértice reverso: completar o trapézio ativo e inserir os dois lados. Atualizar o vértice inferior dos lados adjacentes 1.2 Vértice convexo: inserir os lados.

2- Dois lados abaixo da scanline 2.1 Vértice reverso. Completar os dois trapézios, remover os lados adjacentes e atualizar os vértices inferiores dos lados vizinhos 2.2 Vértice convexo. Completar o trapézio e remover os lados

3- Lados em lados opostos da scanline 3.1 Polígono à esquerda: Completar o trapézio, usando o lado adjacente esquerdo. Remover lado de baixo, inserir lado de cima, atualizar vértice de baixo do lado adjacente esquerdo. 3.2 Polígono à direita. Completar o trapézio, usando o lado adjacente direito. Remover lado de baixo, inserir lado de cima, atualizar vértice de baixo do lado adjacente direito.

O que fazer com y’s repetidos? 1 - Rotacionar a scanline, escolher outra direção 2- Rotacionar o polígono 3- Simular uma rotação muito pequena

Efeitos colaterais 1 - Rotacionar a scanline, escolher outra direção: Calcular interseções com retas inclinadas é mais caro do que com retas horizontais. Além disso, como escolher uma “boa” direção? 2- Rotacionar o polígono: As coordenadas dos vértices deixam de ser inteiras. Como achar um bom ângulo de rotação? 3- Simular uma rotação muito pequena. Como?

Rotação simulada Rotacione os vértices por um ângulo minúsculo. Qual ângulo? Se for minúsculo, não importa!

Rotação simulada

Para cada lado horizontal no polígono original, a interseção com a scanline será o primeiro vértice quando ele entra na estrutura de dados e o segundo vértice logo em seguida, quando ele sairá. E as interseções com a scanline?