Algoritmo de Cohen-Sutherland
Download
Report
Transcript Algoritmo de Cohen-Sutherland
Computação Gráfica - Recorte
Profa. Mercedes Gonzales
Márquez
Tópicos
Conceito de Recorte
Recorte de Pontos
Recorte de Segmentos em Regiões Planares
– Algoritmo de Cohen Sutherland
- Algoritmo de Cyrus-Beck
Recorte de Polígonos em Regiões Planares
– Algoritmo de Sutherland-Hodgeman
Recorte
O objetivo deste tópico é apresentar uma técnica que
melhore o desempenho do imageamento de uma cena
tri-dimensional – o recorte.
A técnica consiste essencialmente em remover
antecipadamente as partes que não estejam dentro do
volume de visão para reduzir a quantidade de operações
que não contribuam efetivamente na qualidade da
imagem exibida.
Recorte
Somente as figuras geométricas contidas no volume de
visão aparecem na área de desenho de uma janela. O
restante das figuras devem ser removidas para não
“poluir” outras áreas da tela, como ilustra a Figura.
O processo de remoção das partes que estejam fora da
janela de exibição é denominado recorte, em inglês
clipping.
Recorte
Recorte de Pontos
Objeto: (x,y,z)
Região Recortante:
–
Região Retangular:
(xmin,xmax,ymin,ymax)
–
Volume Paralelipedal:
(xmin,xmax,ymin,ymax,zmin,zmax)
Recorte de Pontos
Objeto: (x,y,z)
Região Recortante:
–
Região Retangular:
(xmin,xmax,ymin,ymax)
Um ponto (x, y), estará dentro do retângulo de
visualizacao, se:
xmin ≤ x ≤ xmax
ymin ≤ y ≤ ymax
Recorte de Segmentos em Regiões Planares
Objeto: segmentos de reta
Região Recortante:
–
Região Retangular:
(xmin,xmax,ymin,ymax)
Algoritmos de Recorte de Segmentos em Regiões
Planares
– Algoritmo de Cohen Sutherland
- Algoritmo de Cyrus-Beck
Algoritmo de Cohen-Sutherland
O algoritmo de Cohen-Sutherland se baseia em uma
simples constatação: um segmento está totalmente
contido em uma região, se e somente se, os seus
pontos extremos estão contidos nela, e
um segmento está totalmente fora dela, se os seus
pontos extremos estiverem em um semi-espaço que
não contenha a região.
Algoritmo de Cohen-Sutherland
Cohen e Sutherland dividiram o espaço em subespaços a partir da região de interesse e atribuíram
um código para cada sub-espaço de tal forma que
uma operação lógica AND, bit a bit, é suficiente para
separar os segmentos que não interceptam com os
lados da região.
Algoritmo de Cohen-Sutherland
Cohen e Sutherland dividiram o espaço em sub-espaços
a partir da região de interesse e atribuíram um código
para cada sub-espaço de tal forma que uma operação
lógica AND, bit a bit, é suficiente para separar os
segmentos que não interceptam com os lados da região.
Algoritmo de Cohen-Sutherland
.
Algoritmo de Cohen-Sutherland
Se aplicarmos uma operação lógica AND, bit a bit,
entre os códigos dos dois pontos extremos de um
segmento teremos as seguintes possíveis situações:
1. os códigos dos pontos extremos e do resultado são
0000: o segmento está contida na região;
2. o resultado é diferente de zero: o segmento está
totalmente fora da região; e
3. o resultado é 0000 embora os códigos dos pontos
extremos não sejam: é indecidível a pertinência do
segmento à região.
Algoritmo de Cohen-Sutherland
O que faremos no caso 3?
Algoritmo de Cyrus-Beck
Objeto: segmentos de reta
Região Recortante:
–
Convexa
Princípio Básico:
- Uso da representação paramétrica da reta.
- Uso do conceito de vetor normal das arestas da região
de recorte para determinar a que lado da aresta o ponto
se encontra.
Algoritmo Cyrus-Beck
A Figura abaixo mostra uma aresta Ei da região de
recorte e o vetor normal Ni que aponta para fora, e o
segmento P0 a P1.
Fora da região
PEi
Ni , P(t ) PEi 0
P1
Ni , P(t ) PEi 0
P0
Dentro da região
1
3
2 N , P(t ) P 0
i
Ei
P(t ) P0 t ( P1 P0 ) 0 t 1
N i , P(t ) PEi 0
N i , P0 PEi
t
N i , P1 P0
Eq *
Ni
1. Ponto fora da região 2. Ponto na interseção com a aresta 3. Ponto dentro da região
Algoritmo Cyrus-Beck
Só os pontos cujo t está no intervalo [0,1] estão contidos
no segmento de reta.
X3
(t>1)
X2
(0<t<1)
X1
(t<0)
Algoritmo Cyrus-Beck
•
Dado um polígono recortante de n arestas Ei e um
segmento P0P1, sua reta suporte intersecta as n retas
laterais (induzidas pelas arestas do polígono) em n
pontos (caso geral).
•
Seja n=4 (retângulo). Usando a equação Eq* e um
ponto de cada aresta Ei, calculamos os quatro valores
do parâmetro t no qual a reta intersecta as quatro retas
laterais do retângulo de recorte.
•
Após calcular o valor de t para as quatro retas
Algoritmo Cyrus-Beck
Podemos
simplesmente tentar classificar os valores restantes de t,
que estão dentro do intervalo [0 1], escolhendo os valores internos
de t para pontos de intersecção, como no caso da linha 1. Mas,
funcionaria para a linha 2 e a linha3? Como vc pode distinguir esses
casos e completar o algoritmo ? Veja o livro Síntese de Imagens …