AG2
Algoritmos geométricos: fecho convexo •
o fecho fecho conve convexo xo é uma das das estru estrutur turas as mais mais usada usadas s em geome geometri tria a computacional – robótica – reconhecimento de padrões – processamento de imagens – otimização
•
em SIG SIG (siste (sistemas mas de de inform informaçã ação o geográ geográfic fica) a) – delimitar regiões definidas definidas por um conjunto conjunto de pontos • área afetada por alguma doença, doença, cujos casos são lançados com pontos no mapa • modela modelagem gem digit digital al de terreno terrenos s
www.inatel.br/docentes/rosanna
EC202
AG2
Algoritmos geométricos: fecho convexo •
um polígono é convexo se, dados 2 pontos quaisquer em seu limite ou em seu interior , todos os pontos no segmento de linha traçado entre eles estão contido no limite ou no interior do polígono
•
a envoltória convexa de um conjunto Q de pontos é o menor polígono convexo P (que tem a menor menor área) para o qual cada ponto em Q está no limite de P ou em seu interior
um conjunto de pontos Q = {p 0, p1, ..., p 12} com sua envoltória convexa EC(Q) traçada www.inatel.br/docentes/rosanna
EC202
1
AG2
Algoritmos geométricos: fecho convexo •
existem 2 algoritmos que calculam a envoltória convexa de um conjunto de n pontos – ambos decidem quais vértices em Q serão mantidos como vértices da envoltória convexa e quais serão descartados – ambos utilizam uma técnica chamada “varredura rotacional” que processa os vértices na ordem dos ângulos polares que eles formam com um vértice de referência – ambos dão saída aos vértices da envoltória convexa da direita para a esquerda em ordem varredura de Graham
(*)
marcha de Jarvis
www.inatel.br/docentes/rosanna
EC202
AG2
Algoritmos geométricos: fecho convexo •
algoritmo de GRAHAM (1972) – Graham é considerado um dos pioneiros no campo da geometria computacional – a varredura de Graham resolve o problema da envoltória convexa, mantendo uma pilha S de pontos candidatos – cada ponto do conjunto Q de entrada é empurrado uma vez para a pilha, e os pontos que não são vértices da envoltória convexa são, eventualmente, extraídos da pilha – quando o algoritmo termina, a pilha S contém, de baixo para cima, exatamente os vértices da envoltória convexa EC(Q) na ordem da direita para a esquerda de seu aparecimento no limite (fronteira) –
função TOP(S) retorna o ponto que está no topo da pilha (sem alterar S)
–
função NEXT_TO_TOP(S) retorna o ponto que está logo abaixo do topo (sem alterar S)
www.inatel.br/docentes/rosanna
EC202
2
AG2
Algoritmos geométricos: fecho convexo função GRAHAM (M inteiro; Q[M] PONTO) pilha; I inteiro; P[M] PONTO; S pilha; início P[0] = ponto de Q com a coordenada y mínima; sejam P[1], P[2], ..., P[M-1] os pontos restantes de Q, ordenados por ângulo polar em ordem da direita para a esquerda em torno de P[0]; se dois ou mais pontos têm o mesmo ângulo polar em relação a P[0], eles são removidos, exceto o mais afastado de P[0]; push (P[0], S); push (P[1], S); push (P[2], S); // inicializa a pilha S com os 3 primeiros pontos P[0],P[1], P[2] I=3 enquanto (I < M) faça // subtrair de M a quantidade de pontos removidos, se houver início // se o ponto P[I] está à esquerda se (LADO (NEXT_TO_TOPO (S), TOP(S), P[I]) > 0) então início // P[I] é empilhado push (S, P[I]); I = I + 1; fim // remove o ponto da pilha, ele está à direita ou é colinear senão pop (S); fim; retorna S; fim; www.inatel.br/docentes/rosanna
EC202
AG2
Algoritmos geométricos: fecho convexo •
-
algoritmo de GRAHAM (1972)
mostra os pontos numerados seqüencialmente em
p2 é desempilhado
ordem de ângulo polar crescente com relação a p0 p0, p1, p2 são empilhados
www.inatel.br/docentes/rosanna
EC202
3
AG2
Algoritmos geométricos: fecho convexo
• algoritmo de GRAHAM (1972)
www.inatel.br/docentes/rosanna
EC202
AG2
Algoritmos geométricos: fecho convexo
• algoritmo de GRAHAM (1972)
www.inatel.br/docentes/rosanna
EC202
4
AG2
Algoritmos geométricos •
Exercícios) 1) Utilizando o algoritmo de GRAHAM, para os conjuntos de pontos da próxima página (de 1 a 5): a) mostre o conteúdo da pilha S a cada iteração do laço “enquanto” e b) mostre a configuração final do fecho convexo formado (quais vértices serão mantidos como vértices da envoltória convexa)
www.inatel.br/docentes/rosanna
EC202
AG2
Algoritmos geométricos 1)
3)
www.inatel.br/docentes/rosanna
2)
4)
5)
EC202
5