computação gráfica - recorte
DESCRIPTION
Computação Gráfica - Recorte. Profa. Mercedes Gonzales Márquez. Recapitulando... Conceito de Recorte Recorte de Pontos Recorte de Segmentos em Regiões Planares – Algoritmo de Cohen Sutherland Algoritmo de Cyrus-Beck. Tópicos. Recorte de Polígonos em Regiões Planares - PowerPoint PPT PresentationTRANSCRIPT
Computação Gráfica - Recorte
Profa. Mercedes Gonzales Márquez
Tópicos
Recapitulando... 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
Recapitulando... (Conceito CG)
Recapitulando... (Modelagem Geométrica)
Recapitulando... (Modelagem Geométrica)
Recapitulando... (Modelagem Geométrica)
Recapitulando ... (Transformações Geométricas)
Recapitulando ... (Transformações Geométricas)
Recapitulando ...
MODELAGEM GEOMETRICA 3D+
TRANSFORMAÇÕES GEOMÉTRICAS =
CENÁRIO 3D
Recapitulando ...
CENÁRIO 3D IMAGEM
SERÁ NECESSÁRIO
- PROJEÇÃO- RECORTE- AMOSTRAGEM- REMOÇÃO DE SUPERFÍCIES ESCONDIDAS
(VISUALIZAÇÃO)- COLORIZAÇÃO (ILUMINAÇÃO E
TEXTURIZAÇÃO)
Recapitulando ...
CENÁRIO 3D IMAGEM
SERÁ NECESSÁRIO:- RECORTE- PROJEÇÃO- AMOSTRAGEM- REMOÇÃO DE SUPERFÍCIES
ESCONDIDAS (VISUALIZAÇÃO)
- COLORIZAÇÃO (ILUMINAÇÃO E TEXTURIZAÇÃO)
A técnica de recorte consiste na remoção das partes que não estejam dentro do volume de visão.
Somente as figuras geométricas contidas na janela de visão devem aparecer.
Recorte
Remover os pontos que estão fora do volume de visão se reduz, numericamente, em um problema de interseção entre os seus planos limitantes e as figuras geométricas de uma cena e classificação do resultado.
Recorte
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 Pontos
Objeto: segmentos de reta Região Recortante:
– Região Retangular:(xmin,xmax,ymin,ymax)
Algoritmos de Recorte de Segmentos em Regiões Planares ou Recorte 2D– Algoritmo de Cohen Sutherland- Algoritmo de Cyrus-Beck
Recorte de Segmentos em Regiões Planares
Recorte de Segmentos em Regiões Planaresou Recorte 2D
Algoritmo de Cohen-Sutherland
O algoritmo de Cohen-Sutherland se baseia em dois fatos:– um segmento está totalmente contido em uma região, se e
somente se, os seus pontos extremos estão contidos nela,– um segmento está totalmente fora de uma região, se os seus
pontos extremos estiverem em um semi-plano que não contém a 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.
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á contido 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 Cohen-Sutherland
Algoritmo de Cohen-Sutherland
unsigned char code(double x, double y,double xmin,
double xmax, double ymin, double ymax){
unsigned char code=0;
if (y > ymax) code += 8;
if (y < ymin) code += 4;
if (x > xmax) code += 2;
if (x < xmin) code += 1;
return code;
}
unsigned char code(double x, double y,double xmin,
double xmax, double ymin, double ymax){
unsigned char code=0;
if (y > ymax) code += 8;
if (y < ymin) code += 4;
if (x > xmax) code += 2;
if (x < xmin) code += 1;
return code;
}
Algoritmo de Cohen-Sutherland
Algoritmo de Cohen-Sutherland
Algoritmo de Cohen-Sutherland
Algoritmo de Cohen-Sutherland
Teste o programa Cohen-Sutherland para a seguinte região recortante e para os seguintes segmentos:Xmin=-3, xmax=5, ymin=-3, ymax=3
(a)P0=(0,1) e P1=(4,5)(b)P0=(4,6) e P1=(7,2)(c)P0=(0,0) e P1=(3,2)(d)P0=(-4,5) e P1=(-1,4)(e)P0=(3,-4) e P1=(6,-2)
Objeto: segmentos de reta Região Recortante:
– Convexa
Algoritmo de Cyrus-Beck
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,o vetor normal Ni que aponta para fora, e o segmento P0 a P1.
PP00
PP11
NNii
PPEiEi
01
0
010
010
010
,
,
0)(,,
0)(,
0)(,
)()(
PPN
PPNt
PPtNPPN
PPPtPN
PtPN
PPtPtP
i
Eii
iEii
Eii
Eii
0)(, Eii PtPN
0)(, Eii PtPN
0)(, Eii PtPN
Fora da região Dentro da região10 t
1. Ponto fora da região 2. Ponto na interseção com a aresta 3. Ponto dentro da região
3322
11 *Eq
Algoritmo Cyrus-Beck
X1 X1
(t<0)(t<0)
X2 X2
(0<t<1)(0<t<1)
X3 X3
(t>1)(t>1)
Só os pontos cujo t está no intervalo [0,1] estão contidos no segmento de reta.
Algoritmo Cyrus-Beck
• Dado um polígono recortante de Dado um polígono recortante de n n arestas Ei e um arestas Ei e um segmento segmento PP00PP11, sua reta sup, sua reta supoorte interseta as rte interseta as n n retas retas
induzidas pelas arestas do polígono (caso geral).induzidas pelas arestas do polígono (caso geral).• Quando Quando n =n =4 (retângulo) 4 (retângulo) calculamos os quatro valores do calculamos os quatro valores do
parâmetro parâmetro tt no qual a reta interseta as quatro reta no qual a reta interseta as quatro retass late laterrais ais do retângulo de recorte.do retângulo de recorte.
PP00
PP11
Algoritmo Cyrus-Beck
• UUsamos a equação para encontrar as interseção com samos a equação para encontrar as interseção com a aresta Ei. a aresta Ei.
• Após calcular o valor de Após calcular o valor de tt para as quatro retas para as quatro retas descartamos os valores de descartamos os valores de t t fora do intervalo fora do intervalo [[0,10,1]]..
PP00
PP11
NNii
PPEiEi
0)(, Eii PtPN
*Eq
Algoritmo Cyrus-Beck
Classificamos as interseções restantes em:Classificamos as interseções restantes em:
- Potencialmente Entrando (PE)- Potencialmente Entrando (PE)
- Potencialmente Saindo (PL)- Potencialmente Saindo (PL) implica PE →implica PE →
implica PL →implica PL →
0, 01 PPN i
0, 01 PPN i
PP00
PP11
NNii
EiEi
0, 01 PPN i
PP00
NNii
EiEi
0, 01 PPN iPP11
Algoritmo Cyrus-Beck
Para cada reta:Para cada reta:-Ache o PE com maior t (PEm)Ache o PE com maior t (PEm)-Ache o PL com menor t (PLM)Ache o PL com menor t (PLM)-Se PEm<PLM recorte nesses 2 pontosSe PEm<PLM recorte nesses 2 pontos
Algoritmo Cyrus-Beck
1.1. Troque o segmento a ser recortado e o polígono recortante no Troque o segmento a ser recortado e o polígono recortante no programa cyrus-beck.cpp pelos segmentos A, B e C e o polígono programa cyrus-beck.cpp pelos segmentos A, B e C e o polígono recortante da figura anterior.recortante da figura anterior.
2.2. Dê a fórmula para obter o vetor normal de uma aresta do Dê a fórmula para obter o vetor normal de uma aresta do polígono.polígono.
3.3. Em quais situações Em quais situações ??0, 01 PPN i
Recorte de Polígonos
Antes do recorte Depois do recorte
Algoritmo de Sutherland-Hodgeman
Princípio Básico:-Considerar individualmente cada aresta da região recortante.-Recortar o polígono pela equação da aresta.-Depois de fazer isso para todas as arestas, o polígono estará completamente recortado.
Polígono Original
Recorte
esquerdo
Recorte
direito
Recorte
inferior
Recorte
Superior
Algoritmo de Sutherland-Hodgeman
Entrada/Saída do algoritmoEntrada: lista ordenada de vértices do polígonoSaída: lista dos vértices recortados, com alguns vértices originais (possivelmente) e outros novos (possivelmente)
Algoritmo de Sutherland-Hodgeman
Aresta de s a p se enquadra em um dos 4 casos:
ForaFora
ss
pp
Copiar pCopiar p
DentroDentro ForaFora
sspp
Copiar iCopiar i
DentroDentro ForaFora
ss
pp
IgnorarIgnorar
DentroDentro
sspp
Copiar i,pCopiar i,p
ii
ii
DentroDentro ForaFora
Algoritmo de Sutherland-Hodgeman
Algoritmo de Sutherland-Hodgeman
Algoritmo de Sutherland-Hodgeman
vdvd00
00
vdvd22 vdvd33
001111
vdvd11
vfvf0 0 0 0 vdvd0 0 0 0 vfvf1 1 vfvf2 2 11vdvd1 1 vdvd2 2 vdvd3 3 1 1 vfvf33vfvf00
vfvf00vfvf33
vfvf11 vfvf22
0 0 vdvd0 0 0 0 0 0 ee 1 1 vdvd1 1 vdvd2 2 vdvd3 3 1 1 1 1
Algoritmo de Sutherland-Hodgeman
vdvd00
00
vdvd22 vdvd33
001111
vdvd11
Algoritmo de Sutherland-Hodgeman
vdvd11
vdvd00
vdvd33 vfvf22
vdvd22vfvf33vfvf00
vfvf1100
00
Algoritmo de Sutherland-Hodgeman
vdvd11
vdvd00
vdvd33
vdvd22
00
00
Algoritmo de Sutherland-Hodgeman
Exercício: (1) Mostre passo a passo como seria a saída do recorte do seguinte polígono.
(2) Você poderia rodar o exemplo (1) usando o programa
SutherlandHodgman.cpp postado no site? Quais modificaSutherlandHodgman.cpp postado no site? Quais modificações ções deverão ser feitasdeverão ser feitas ? ?. Faça-as.. Faça-as.