590 likes | 843 Views
Geometria Computacional. Triangulação e conceitos afins . Exemplo: Caminho mais curto. Pode ser reduzido ao problema de encontrar o caminho mais curto em um grafo (grafo de visibilidade) Resolve-se com algoritmos não geométricos Ex.: Algoritmo de Dijkstra
E N D
Geometria Computacional Triangulação e conceitos afins
Exemplo: Caminho mais curto • Pode ser reduzido ao problema de encontrar o caminho mais curto em um grafo (grafo de visibilidade) • Resolve-se com algoritmos não geométricos • Ex.: Algoritmo de Dijkstra • Algoritmos geométricos podem dar uma solução mais eficiente
Eficiência dos Algoritmos • Complexidade assintótica de pior caso • Problema do Caminho mais curto • Algoritmo simples O (n2 log n) • Algoritmo complexo O (n log n) • Casos médios • Difíceis de se caracterizar • Requerem que se estipule uma distribuição “típica” • Muitas estruturas de dados e algoritmos que se conjectura serem eficientes para casos típicos • Quadtrees em geral • BSP trees
Limitações da Geometria Computacional • Dados discretos • Aproximações de fenômenos contínuos • Funções quantizadas ao invés de funções contínuas (e.g. imagens) • Objetos geométricos “planos” • Aproximações de geometrias “curvas” • Dimensionalidade • Normalmente, 2D e um pouco de 3D • Problemas n-dimensionais são pouco abordados
Técnicas usadas em GC • Técnicas convencionais de desenho de algoritmos • Dividir para conquistar • Programação dinâmica • Técnicas próprias para algoritmos geométricos • Varredura (plane sweep) • Construções randomizadas incrementais • Transformações duais • Fractional Cascading
Tendências • Muitas soluções “ótimas” foram obtidas mas as implementações ... • Muito complicadas • Muito sensíveis a casos degenerados • Problemas de precisão • Complexidade inaceitável para problemas pequenos • Foco em obter soluções práticas • Algoritmos simples • Freqüentemente randomizados • Tratamento de casos degenerados • Engenharia de software
Problemas – Fecho Convexo • Menor polígono (poliedro) convexo que contém uma coleção de objetos (pontos)
Problemas - Interseções • Determinar interseções entre coleções de objetos
Problemas – Triangulações • Dividir domínios complexos em coleções de objetos simples (simplexes)
Problemas – Prog. Linear em 2d e 3d • Problemas de otimização • Ex.: menor disco que contém um conjunto de pontos
Problemas – Arranjos de Retas • Dada uma coleção de retas, é o grafo formado pelos pontos de interseção e segmentos de reta entre eles • Problemas sobre pontos podem ser transformados em problemas sobre retas (dualidade)
Problemas – Diagramas de Voronoi e Triangulações de Delaunay • Dada uma coleção de pontos S • Diagrama de Voronoi delimita as regiões de pontos mais próximos • Triangulação de Delaunay é o dual do D. V.
Problemas – Busca Geométrica • Algoritmos e estruturas de dados para responder consultas geométricas. Ex.: • Todos os objetos que interceptam uma região • Polígono • Disco • Par de pontos mais próximos • Vizinho mais próximo • Caminho mais curto
Geometria Afim • Composta dos elementos básicos • escalares • pontos - denotam posição • vetores - denotam deslocamento (direção e magnitude) • Operações • escalar · vetor = vetor • vetor + vetor ou vetor – vetor = vetor • ponto – ponto = vetor • ponto + vetor ou ponto – vetor = ponto
Combinações Afim • Maneira especial de combinar pontos • Para 2 pontos P e Q poderíamos ter uma combinação afim R = (1– )P +Q = P +(P – Q) P P < 0 R= P+(P – Q) Q 0 < < 1 Q > 1
Combinações Convexas • Combinações afim onde se garante que todos os coeficientes i são positivos (ou zero) • Usa-se esse nome porque qualquer ponto que é uma combinação convexa de n outros pontos pertence à envoltória convexa desses pontos P2 P1 P3 Q P5 P4
Geometria Euclidiana • Extensão da geometria afim pela adição de um operador chamado produto interno • Produto interno é um operador que mapeia um par de vetores em um escalar. Tem as seguintes propriedades: • Positividade : (u,u) 0 e (u,u)= 0 sse u=0 • Simetria: (u,v)= (v,u) • Bilinearidade: (u,v+w)= (u,v)+ (u,w) e (u,v)= (u,v)
Geometria Euclidiana • Normalmente usamos o produto escalar como operador de produto interno: • Comprimento de um vetor é definido como: • Vetor unitário (normalizado):
Geometria Euclidiana • Distância entre dois pontos P e Q =|P – Q | • O ângulo entre dois vetores pode ser determinado por • Projeção ortogonal: dados dois vetores u e v, deseja-se decompor u na soma de dois vetores u1 e u2 tais que u1 é paralelo a v e u2 é perpendicular a v u u2 v u1
Produto Vetorial (3D) • Permite achar um vetor perpendicular a outros dois dados • Útil na construção de sistemas de coordenadas v u×v u . • Propriedades (assume-se u, v linearmente independentes): • Antisimetria: u × v = – v × u • Bilinearidade: u × (v)= (u × v) e u × (v + w)= (u × v) + (u × w) • u × v é perpendicular tanto a u quanto a v • O comprimento de u × v é igual a área do paralelogramo definido por u e v, isto é, | u × v | = | u | |v | sin
Sistemas de coordenadas • Um sistema de coordenadas para Rn é definido por um ponto (origem) e n vetores • Ex. Seja um sistema de coordenadas para R2 definido pelo ponto O e os vetores X e Y. Então, • Um ponto P é dado por coordenadas xP e yP tais que • Um vetor V é dado por coordenadas xV e yV tais que
Coordenadas Homogêneas • Coordenadas homogêneas permitem unificar o tratamento de pontos e vetores • Problema é levado para uma dimensão superior: • Coordenada extra w= 0 para vetores e =1 p/ pontos • O significado da coordenada extra é levar ou não em consideração a origem do sistema • Coordenadas homogêneas têm diversas propriedades algébricas interessantes • Ex. Subtração de dois pontos naturalmente resulta em um vetor
Orientação • Orientação de 2 pontos em 1D • P1 < P2 , P1 = P2 ou P1 > P2 • Orientação de 3 pontos em 2D • O percurso P1 , P2 , P3 é feito no sentido dos ponteiros do relógio, no sentido contrário ou são colineares Or (P1, P2, P3) = 0 Or (P1, P2, P3) = +1 Or (P1, P2, P3) = -1 P3 P1 P3 P2 P1 P2 P1 P2 P3
Or (P1, P2, P3, P4) = +1 P3 P1 P2 P4 Orientação • Orientação de 4 pontos em 3D • O percurso P1 , P2 , P3 , P4 define um parafuso segundo a regra da mão direita, mão esquerda ou são coplanares • O conceito pode ser estendido a qualquer número de dimensões ...
Computando Orientação • A orientação de n+1 pontos em um espaço n-dimensional é dado pelo sinal do determinante da matriz cujas colunas são as coordenadas homogêneas dos pontos com o 1 vindo primeiro
Problema • Dado um conjunto P de pontos do Rn, decompor o seu fecho convexo conv(P ) num complexo simplicial cuja união seja conv(P ) e cujo conjunto de vértices contenha P. • Não existe uma solução única para esse problema. • No plano, toda triangulação de conv(P) possui exatamente (2n – v – 2) triângulos e (3n – v – 3) arestas, onde v é o número de pontos de P na fronteira de conv(P), n a cardinalidade de P e a o número de arestas. • Use a fórmula de Euler para esfera: V – A + F = 2.
Problemas – Triangulações • Dividir domínios complexos em coleções de objetos simples (simplexes)
Dedução • O número de faces F é igual ao número de triângulos T + 1, pois tem-se de considerar a face externa ilimitada no plano. n – a + (T + 1) = 2 • Cada triângulo possui 3 arestas. Como cada aresta aparece em 2 triângulos, arestas são contadas duas vezes. O Tamanho da solução para o problema de triangulação é linear com o número de pontos
Algoritmo Força Bruta • Obtenha conv(P ) e triangule-o por diagonais. Cada ponto que não esteja na fronteira de conv(P ) é inserido em conv(P ) e o triângulo que o contém é subdividido. • Algoritmo O(n log n) para achar conv(P ). • Inclusão de cada ponto é O(n). • Algoritmo completo é O(n2).
Problema Resolvido? • Embora todas as triangulações de conv(P ) tenham o mesmo número de triângulos, a forma dos triângulos é muito importante em aplicações numéricas. • Triangulação de Delaunay tem a importante propriedade de, entre todas as triangulações de conv(P ), maximizar o menor de todos os ângulos internos dos triângulos. • Isso só é verdade no R2.
Como Triangular? • Uma triangulação fornece uma estrutura combinatória a um conjunto de pontos. • Na realidade, um algoritmo de triangulação fornece regras para conectar pontos “próximos”. • A triangulação de Delaunay conecta os pontos baseado em um único critério: círculos vazios. • Conceitualmente simples e fácil de implementar. • O critério de proximidade vem do Diagrama de Voronoi.
Diagrama de Voronoi • É uma partição do Rnem polígonos convexos associados a um conjunto de sítios (tesselação de Dirichlet). • O conceito foi discutido em 1850 por Dirichlet e em 1908 num artigo do matemático russo Georges Voronoi. • É a segunda estrutura mais importante em Geometria Computacional perdendo apenas para o fecho convexo. • Possui todas as informações necessárias sobre a proximidade de um conjunto de pontos. • É a estrutura dual da triangulação de Delaunay.
Definições • Seja P = {p1,p2,...,pn} um conjunto de pontos do plano euclidiano, chamados de sítios. Particione o plano atribuindo a cada ponto do plano o sítio mais próximo. • Todos os pontos associados a pi formam um polígono de Voronoi V(pi): • O conjunto de todos os pontos associados a mais de um sítio forma o diagrama de Voronoi Vor(P ).
x p2 p1 B12 Dois Sítios • Sejam p1 e p2doissítios e B(p1, p2) = B12 a mediatriz do segmento p1p2. • Cada ponto x B12 é eqüidistante de p1 e p2(congruência lado-ângulo-lado).
B23 p2 p3 B12 p1 B31 Três Sítios • A menos do triângulo (p1, p1, p3), o diagrama contém as mediatrizes B12, B23, B31. • As mediatrizes dos lados de um triângulo se encontram no circuncentro do círculo único que passa pelos três vértices (Euclides).
Semi-planos • A generalização para mais de três pontos corresponde ao local geométrico da interseção dos semi-planos fechados H(pi, pj), dos pontos mais próximos de pi do que de pj.
7 pontos definem o mesmo número de polígonos de Voronoi. Um dos polígonos é limitado porque o sítio correspondente está completamente cercado por outros sítios. Cada ponto do R2 possui pelo menos um vizinho mais próximo. Logo, ele pertence a pelo menos um polígono de Voronoi. Assim, o diagrama de Voronoi cobre completamente o plano. Voronoi de 7 pontos
Teoremas • Os polígonos de Voronoi correspondentes a um par de pontos xi e xj possuem uma aresta comum, se e somente se existem pontos (aqueles da aresta comum) que são eqüidistantes dos pontos xi e xj que estão mais próximos deles do que de qualquer outro ponto de P. • Um polígono de Voronoi é ilimitado se somente se o ponto correspondente xipertencer à fronteira de conv(P ).
B23 p2 p3 B12 p1 B31 Círculos Vazios • Todo vértice v de Vor(P ) é comum a pelo menos três polígonos de Voronoi e é centro de um círculo C (v) definido pelos pontos de P correspondentes aos polígonos que se encontram em v. Além disso, C (v) não contém nenhum outro ponto de P. • Os pontos de P estão em posição geral se nenhum sub-conjunto de P contém 4 pontos co-circulares.
Algoritmo para Voronoi • Pode-se determinar os conjuntos T1,T2,...,Tt de P que determinam círculos vazios para construir Vor(P ). • Cada Tk é formado por três ou mais pontos co-circulares de P. • Se os pontos de P estão em posição geral, todo Tkcontém exatamente 3 sítios de P. • As arestas de Vor(P ) são os segmentos mediatrizes correspondentes a pontos consecutivos dos Tk. • Uma vez conhecidos todos os Tk, Vor(P ) pode ser determinado em tempo linear.
Ligação entre Voronoi e Delaunay • No diagrama de Voronoi cada sítio está associado a um polígono (face) de Vor(P ). • O grafo dual tem por vértices os sítios de Vor(P ), e por arestas os pares de sítios cujos polígonos são vizinhos. • O grafo dual é Chamado de triangulação de DelaunayDel(P ). • Dois sítios xi e xj determinam uma aresta de Del(P ) se e somente se existe um círculo C contendo xi e xjtal que todos os outros sítios sejam exteriores a C.
Triangulação de Delaunay • Em 1934, o matemático russo Boris Delaunay provou que quando o grafo dual é desenhado com linhas retas ele produz uma triangulação dos sítios do diagrama de Voronoi (supostos estarem em posição geral). • Não é óbvio que as arestas de Del(P ) não se cruzam, já que uma aresta entre dois sítios não cruza, necessariamente, a aresta de Voronoi correspondente.
Propriedades de Delaunay D1. Del(P ) é o dual com arestas retilíneas de Vor(P ). D2. Del(P ) é uma triangulação se nenhum grupo de 4 pontos forem co-circulares. Cada face é um triângulo (teorema de Delaunay). D3. Cada triângulo de Del(P ) corresponde a um vértice deVor(P ). D4. Cada aresta de Del(P ) corresponde a uma aresta de Vor(P ). D5. Cada vértice de Del(P ) corresponde a um polígono (face) de Vor(P ). D6. A fronteira de Del(P ) é o fecho convexo dos sítios. D7. O interior de cada triângulo (face) de Del(P ) não contém sítios.