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 Dentro da região N i , P ( t ) PEi 0 P1 N i , P ( t ) PEi 0 P0 3 1 2 N , P (t ) P 0 i Ei P ( t ) P0 t ( P1 P0 ) 0 t 1 N i , P ( t ) PEi 0 t N i , P0 PEi Eq * N i , P1 P 0 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 …