computação gráfica - recorte profa. mercedes gonzales márquez
TRANSCRIPT
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 ...
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
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; e3. 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
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
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-BeckA 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)(,)()(
PPNPPNt
PPtNPPNPPPtPN
PtPNPPtPtP
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 PPNi
PP00
PP11
NNii
EiEi
0, 01 PPN i
PP00
NNii
EiEi
0, 01 PPNiPP11
Algoritmo Cyrus-BeckPara 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-Beck1.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
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
Recorteesquerdo
Recortedireito
Recorteinferior
RecorteSuperior
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
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
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.