Upload
haquynh
View
222
Download
0
Embed Size (px)
Citation preview
1
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Geometria Computacional: Polígonos
INF2604 – Geometria Computacional
Prof. Hélio Lopes
sala 408 RDC
Polígonos
O que é um polígono?
Um polígono é uma região fechada do plano limitada por uma coleção de segmentos de reta
formando uma curva fechada que não se auto-intersepta.
Os segmentos de reta são chamados de arestas e os pontos onde arestas adjacentes se interseptam são
chamados de vértices.
2
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Qual desses objetos é um polígono?
Polígonos
Arestas e vértices Os segmentos de reta são chamados de arestas e os pontos onde arestas adjacentes se interseptam são
chamados de vértices.
O conjunto de vértices e arestas de um polígono P é
chamado de bordo, e é denotado por . !P
3
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Teorema 1: Curva de Jordan
O bordo de um polígono P divide o plano em duas regiões. Em particular, as componentes de R2/ são a
região limitada do interior do polígono e a região ilimitada do seu exterior.
!P!P
Polígonos
Prova simplificada do Teorema 1
Se P é um polígono no plano, primeiramente escolha uma direção fixa no plano que não seja paralela a
nenhuma das arestas de P. Então, qualquer ponto p0 que não esteja em cai em uma das situações:
1. o raio que começa em p0 na direção fixada atravessa o bordo
de P num número par de vezes: p0 está no exterior.
2. o raio que começa em p0 na direção fixada atravessa o bordo
de P num número ímpar de vezes: p0p está no interior.
!P
4
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Prova simplificada do Teorema 1
Polígonos
Localização de pontos em relação a polígonos
Desejamos determinar se um ponto p0=(x0,y0) é interior, exterior ou está no bordo de um polígono P = p1, p2,…,pn.
Uma solução para o problema consiste em considerar uma semi-reta L partindo de p0 e determinar seus
pontos de interseção com o bordo de P. Se p0 coincidir
com um desses pontos, então p0 está no bordo. Senão basta contar o número de interseções e ver se esse
número é par ou ímpar. Se for par, o ponto p0 está no exterior, senão p0 está no interior de P.
5
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Localização de pontos em relação a polígonos
Para obter um algoritmo baseado na descrição
acima, é necessário ter cuidado com alguns
detalhes. Já que L é arbitrária, optamos por
tomar a semi-reta horizontal para simplificar os
cálculos de interseção:
L={(x0,y0)+t(1,0)|t ≥0}
Polígonos
Localização de pontos em relação a polígonos
Os pontos de interseção de L com o bordo do polígono são obtidos calculando o ponto de interseção de L com
cada aresta do polígono. Surgem dificuldades quando L contém vértices do polígono.
Quando um ponto de interseção é um vértice, não é
necessariamente verdade que L passe do interior para o exterior!
Problemas existem também quando L contém um lado do polígono!
6
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Localização de pontos em relação a polígonos
Uma forma prática de solucionar os conflitos
acima é a seguinte: a interseção de uma aresta
pipi+1 com L é contada somente se ela ocorrer
em um ponto que não seja de ordenada mínima
em pipi+1.
Polígonos
Localização de pontos em relação a polígonos
0 2 1 0 2 1
Casos Número de Interseções
7
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Exercício:
Desenvolva um algoritmo para testar se um
ponto p0 está no bordo, no interior ou no
exterior um polígono P com n lados.
Qual é a complexidade desse algoritmo?
Polígonos
Algoritmo: Ponto_em_poligono
Dados: p0=(x0,y0); p[i]=(x[i],y[i]),i=1..n; p[n+1] = p[1]
N = 0
para i = 1:n
se y[i] != y[i+1] então
(x,y) = a interseção de p[i]p[i+1] com L
se x = x0 então
retorne que p0 é da fronteira.
senão
se x > x0 e y > min(y[i],y[i+1]) então N = N+1;
senão
se p0 pertence a aresta p[i]p[i+1] então retorne que p0 é da fronteira.
se N é ímpar, retorne que p0 é interior a P, senão retorne que p0 é exterior a P.
8
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Triangulação de um polígono A triangulação de um polígono P é a decomposição de P em triângulos por um conjunto maximal de
diagonais que não se interseptam.
Uma diagonal de um polígono P é um segmento de
reta que conecta dois vértices de P e que está no interior de P.
Aqui, conjunto maximal significa que nenhuma
outra diagonal pode ser adicionada ao conjunto sem interseptar alguma outra diagonal do conjunto.
Polígonos
Triangulação de um polígono
9
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Lema 1:
Qualquer polígono com mais de três vértices
tem uma diagonal.
Polígonos
Teorema 2:
Qualquer polígono possui uma triangulação.
Teorema 3:
Toda triangulação de um polígono P com n
vértices tem n-2 triângulos e n-3 diagonais.
10
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
Polígonos
Orelha
Três vértices consecutivos a,b,c de um polígono
formam uma orelha se ac é uma diagonal do
polígono.
Teorema 4:
Toda triangulação de um polígono P com mais
de três vértices tem pelo menos duas orelhas.
Polígonos
Exercício:
Desenvolva um algoritmo para triangular um
polígono.
Qual é a complexidade desse algoritmo?
11
INF2604 - GEOMETRIA COMPUTACIONAL • Prof. Hélio Lopes 9/5/12
dúvidas? Prof. Hélio Lopes [email protected] sala 408 RDC