computação gráfica - recorte

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

Upload: valentine-reilly

Post on 01-Jan-2016

68 views

Category:

Documents


14 download

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 Presentation

TRANSCRIPT

Page 1: Computação Gráfica - Recorte

Computação Gráfica - Recorte

Profa. Mercedes Gonzales Márquez

Page 2: Computação Gráfica - Recorte

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

Page 3: Computação Gráfica - Recorte

Recapitulando... (Conceito CG)

Page 4: Computação Gráfica - Recorte

Recapitulando... (Modelagem Geométrica)

Page 5: Computação Gráfica - Recorte

Recapitulando... (Modelagem Geométrica)

Page 6: Computação Gráfica - Recorte

Recapitulando... (Modelagem Geométrica)

Page 7: Computação Gráfica - Recorte

Recapitulando ... (Transformações Geométricas)

Page 8: Computação Gráfica - Recorte

Recapitulando ... (Transformações Geométricas)

Page 9: Computação Gráfica - Recorte

Recapitulando ...

MODELAGEM GEOMETRICA 3D+

TRANSFORMAÇÕES GEOMÉTRICAS =

CENÁRIO 3D

Page 10: Computação Gráfica - Recorte

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)

Page 11: Computação Gráfica - Recorte

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)

Page 12: Computação Gráfica - 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

Page 13: Computação Gráfica - 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

Page 14: Computação Gráfica - 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

Page 15: Computação Gráfica - Recorte

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

Page 16: Computação Gráfica - Recorte

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

Page 17: Computação Gráfica - Recorte

Recorte de Segmentos em Regiões Planaresou Recorte 2D

Page 18: Computação Gráfica - Recorte

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.

Page 19: Computação Gráfica - Recorte

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.

Page 20: Computação Gráfica - Recorte

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.

Page 21: Computação Gráfica - Recorte

Algoritmo de Cohen-Sutherland

O que faremos no caso 3?

Page 22: Computação Gráfica - Recorte

Algoritmo de Cohen-Sutherland

Page 23: Computação Gráfica - Recorte

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;

}

Page 24: Computação Gráfica - Recorte

Algoritmo de Cohen-Sutherland

Page 25: Computação Gráfica - Recorte

Algoritmo de Cohen-Sutherland

Page 26: Computação Gráfica - Recorte

Algoritmo de Cohen-Sutherland

Page 27: Computação Gráfica - Recorte

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)

Page 28: Computação Gráfica - Recorte

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.

Page 29: Computação Gráfica - Recorte

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

Page 30: Computação Gráfica - Recorte

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.

Page 31: Computação Gráfica - Recorte

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

Page 32: Computação Gráfica - Recorte

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

Page 33: Computação Gráfica - Recorte

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

Page 34: Computação Gráfica - Recorte

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

Page 35: Computação Gráfica - Recorte

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

Page 36: Computação Gráfica - Recorte

Recorte de Polígonos

Antes do recorte Depois do recorte

Page 37: Computação Gráfica - 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

Page 38: Computação Gráfica - Recorte

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)

Page 39: Computação Gráfica - Recorte

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

Page 40: Computação Gráfica - Recorte

Algoritmo de Sutherland-Hodgeman

Page 41: Computação Gráfica - Recorte

Algoritmo de Sutherland-Hodgeman

Page 42: Computação Gráfica - Recorte

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

Page 43: Computação Gráfica - Recorte

Algoritmo de Sutherland-Hodgeman

vdvd00

00

vdvd22 vdvd33

001111

vdvd11

Page 44: Computação Gráfica - Recorte

Algoritmo de Sutherland-Hodgeman

vdvd11

vdvd00

vdvd33 vfvf22

vdvd22vfvf33vfvf00

vfvf1100

00

Page 45: Computação Gráfica - Recorte

Algoritmo de Sutherland-Hodgeman

vdvd11

vdvd00

vdvd33

vdvd22

00

00

Page 46: Computação Gráfica - Recorte

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.