460 likes | 567 Views
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
E N D
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ígonosemRegiõesPlanares – Algoritmo de Sutherland-Hodgeman
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)
Recorte • 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 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 SegmentosemRegiõesPlanaresouRecorte 2D – Algoritmo de Cohen Sutherland • Algoritmo de Cyrus-Beck
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 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 recortantee para os seguintes segmentos: Xmin=-3, xmax=5, ymin=-3, ymax=3 • P0=(0,1) e P1=(4,5) • P0=(4,6) e P1=(7,2) • P0=(0,0) e P1=(3,2) • P0=(-4,5) e P1=(-1,4) • P0=(3,-4) e P1=(6,-2)
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 abaixomostraumaarestaEi da região de recorte,ovetor normal Ni que aponta para fora, e o segmento P0 a P1. Fora da região Dentro da região PEi P1 3 2 P0 1 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ãocontidos 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 interseta as n retas induzidas pelas arestas do polígono (caso geral). • Quando n =4 (retângulo) calculamos os quatro valores do parâmetro t no qual a reta interseta as quatro retas laterais do retângulo de recorte. P1 P0
Algoritmo Cyrus-Beck • Usamos a equação para encontrar as interseção com a aresta Ei. • Após calcular o valor de t para as quatro retas descartamos os valores de t fora do intervalo [0,1]. PEi P1 P0 Ni
Algoritmo Cyrus-Beck Classificamos as interseções restantes em: - Potencialmente Entrando (PE) - Potencialmente Saindo (PL) implica PE → implica PL → Ei P1 P0 Ni Ei P0 P1 Ni
Algoritmo Cyrus-Beck • Para cada reta: • Ache o PE com maior t (PEm) • Ache o PL com menor t (PLM) • Se PEm<PLM recorte nesses 2 pontos
Algoritmo Cyrus-Beck 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 recortante da figura anterior. Dê a fórmula para obter o vetor normal de uma aresta do polígono. Em quais situações ?
Antes do recorte Depois do recorte Recorte de Polígonos
Polígono Original Recorte esquerdo Recorte direito Recorte inferior Recorte Superior Algoritmo de Sutherland-Hodgeman • PrincípioBásico: • Considerarindividualmentecadaarestadaregiãorecortante. • Recortar o polígonopelaequaçãodaaresta. • Depois de fazerissoparatodas as arestas, o polígonoestarácompletamenterecortado.
Algoritmo de Sutherland-Hodgeman • Entrada/Saída do algoritmo • Entrada: listaordenada de vértices do polígono • Saída: lista dos vérticesrecortados, com algunsvérticesoriginais (possivelmente) e outrosnovos (possivelmente)
Algoritmo de Sutherland-Hodgeman Aresta de s a p se enquadra em um dos 4 casos: Dentro Fora Fora Dentro Fora Dentro Fora Dentro p s i s p p s i p s Copiar p Copiar i Ignorar Copiar i,p
Algoritmo de Sutherland-Hodgeman vf3 vf0 vf1 vf2 1 1 0 0 vd1 vd0 vd2 vd3 vf0 0 vd0 0 vf1 vf2 1vd1 vd2 vd3 1 vf3vf0 0 vd0 0 0 e1 vd1 vd2 vd3 1 1
Algoritmo de Sutherland-Hodgeman 1 1 0 0 vd1 vd0 vd2 vd3
Algoritmo de Sutherland-Hodgeman vf3 vf0 vd0 vd2 vf1 0 vd1 vd3 vf2 0
Algoritmo de Sutherland-Hodgeman vd0 vd2 0 vd1 vd3 0
Algoritmo de Sutherland-Hodgeman Exercício: (1) Mostrepasso a passocomoseria a saída do recorte do seguintepolígono. (2) Vocêpoderiarodar o exemplo (1) usando o programa SutherlandHodgman.cpp postado no site? Quaismodificações deverão ser feitas ?. Faça-as.