46
Computação Gráfica - Recorte Profa. Mercedes Gonzales Márquez

Computação Gráfica - Recorte Profa. Mercedes Gonzales Márquez

Embed Size (px)

Citation preview

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; 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

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;}

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-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

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

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

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.