Transformações de Visualização 2D:...

47
Transformações de Visualização 2D: Clipping 1 Clipping Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

Transcript of Transformações de Visualização 2D:...

Page 1: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D:

Clipping

1

Clipping

Antonio L. BajuelosDepartamento de Matemática

Universidade de Aveiro

Page 2: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping (recorte)(recorte)

Qualquer procedimento que identifica porções de umafigura que estão ou dentro ou fora de uma regiãoespecífica é chamada declipping

� Muitos pacotes gráficos combinama transformaçãowindow-to-viewport com clipping de primitivasgráficasdesaída.

2

gráficasdesaída.

� Algumas aplicações:

� extrair parte de uma cena

� identificar superfícies visíveis emvisões 3D

� operações de edição de objectos (copiar, mover)

Page 3: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping (cont(cont......))

3

Page 4: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping (cont(cont......))

�Clip window : a região na qual umobjecto será“clipado” (geralmente uma área rectangular)

�� Primitivas:

� Pontos

4

� Linhas (segmentos de recta)

� Áreas (polígonos)

� Curvas

� Texto

Page 5: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping dede PontosPontos

� Assumir quea clip-window é rectangular

� Um pontoP = (x, y) será considerado para visualizar seforemsatisfeitas as seguintes condições:

xwmin≤ x≤ xwmax

yw ≤ y≤ yw

5

� As arestas daclip window podemser coordenadas dajanela dasworld coordinatesou os límites daviewport.

� Se alguma das condições não for satisfeita, o objecto éclipped, ou seja, fica fora da zona da visualizção

ywmin≤ y≤ ywmax

Page 6: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping dede LinhasLinhas (segmentos(segmentos dede recta)recta)

� Recorte de um linha contra uma área rectangular resulta sempre numsegmento de recta.

� A parte que recai dentro da área de recorte é apresentada.

� As restantes são ignoradas

� Dividimos o processo de recorte (clipping) em duas fases:

I. Identificar os segmentosde recta que intersectam a fronteira

6

I. Identificar os segmentosde recta que intersectam a fronteirada janela e que portanto, necessitamde ser recortados.

II. Execução do recorte

Page 7: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping dede LinhasLinhas (segmentos(segmentos dede recta)recta)

� Comoidentificar os segmentos de recta que intersectamafronteira da janela e que portanto, necessitamde serrecortados?

� Todos os segmentos de recta caemnuma das seguintescategorias de recorte:

�Visível –

7

�Visível –� os dois pontos terminais do segmento de recta estão situados

dentro da janela.

�Não visível –� se ambos os pontos extremos se encontram no exterior da área

de recorte e não existe intersecção com a mesma

�Candidato ao recorte –� o segmento de recta não pertence nem à categoriavisível nem à

categorianão visível

Page 8: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping dede LinhasLinhas (segmentos(segmentos dede recta)recta)

� Exemplo das categorias do segmento:

Não Visível

8

Visível

Candidato a Recorte

Page 9: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ClippingClipping dede LinhasLinhas (segmentos(segmentos dede recta)recta)

� Visível –� os dois pontos terminais do segmento de recta estão situados

dentro da janela:

� Não visível –o segmento de recta satisfaz alguma das seguintes

xmin<x1, x2<xmax; ymin<y1,y2<ymax

9

� o segmento de recta satisfaz alguma das seguintesdesigualdades:

� Candidato ao recorte –� o segmento de recta não pertence nem à categoriavisível nem

à categorianão visível

x1, x2>xmax; x1, x2<xmin;

ymin >y1,y2 ;y1 ,y2>ymax

Page 10: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede CohenCohen--SutherlandSutherland((clippingclipping))

Organigrama Geral

� Testar os pontos extremos, para verificar se o segmentoestá todo contido na janela de recorte, evitando cálculos deintersecção.

� Se o segmento é classificado comocandidato a recorteentão:

10

então:

� é dividido em dois segmentos, a partir de uma dasarestas da janela de recorte, de forma que umdossegmentos possa ser classificado comonão-visível.

� repete-se o processo de divisão do segmento restanteaté cada umdos segmentos sejavisível/não-visível

Page 11: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede CohenCohen--SutherlandSutherland((contcont……))

� Para facilitar o processamento, emprega um cálculo lógico ao nível do bit da seguinte forma:

� Atribuição de um código de 4 bits a cada ponto extremo dosegmento de recta:

� O código é determinado de acordo com cada uma das noveregiões possíveis, do plano à qual o ponto extremo pertence:

11

(�)bit 1 setado: se x < xmin

bit 2 setado: se x > xmax

bit 3 setado: se y < ymin

bit 4 setado: se y > ymax

Page 12: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede CohenCohen--SutherlandSutherland (cont(cont......))

I. Atribuição de um código de 4 bits a cada ponto extremo dosegmento de recta:

(�)bit 1 setado: se x < xmin

bit 2 setado: se x > xmax

bit 3 setado: se y < ymin

12

I. O segmento de recta:

� évisívelse os códigos dos dois pontos extremos são 0000,

� énão-visívelse o AND lógico dos códigos não é 0000 e

� é um candidato ao recortese o AND lógico dos códigos dospontos terminais é 0000

bit 3 setado: se y < ymin

bit 4 setado: se y > ymax

Page 13: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede CohenCohen--SutherlandSutherland (cont(cont......))

� Exemplo:

H’H’’

I’

13

Critérios:� é visível se os códigos dos dois pontosextremos são 0000

� é não-visível se oAND lógico dos códigosnão é 0000

� é umcandidato ao recortese oAND lógico doscódigos dospontos terminais é 0000

Page 14: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede CohenCohen--SutherlandSutherland (cont(cont......))

� Determinam-se os pontos de intersecção dos segmentoscandidatos ao recortecoma janela

� Estes pontos de intersecção subdividemos segmentos derecta emsegmentos de recta mais pequenos, os quaispodempertencer à categoriavisívelounão visível

� O segmentoderectadacategoriavisível seráo segmento

14

� O segmentoderectadacategoriavisível seráo segmentode recta recortado

H’H’’

I’

Page 15: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede CohenCohen--SutherlandSutherland (cont(cont......))

� Os pontos de intersecçãosão determinados através da resolução dasequações que representam o segmento e aslinhas-fronteiras dajanela

� Para janelas rectangulares, cujos lados são paralelos aos eixoscoordenados, não precisamos de verificar a intersecção dosegmento de recta comtodas as quatrolinhas-fronteira.

� O algoritmo deCohen-Sutherlanddetermina a(s) linha(s)-fronteira(s)apropriadasparateste:

15

apropriadasparateste:

H’H’’

I’

Bit 4 = 1 � ∩ com ymax

Bit 3 = 1 � ∩ com ymin

Bit 2 = 1 � ∩ com xmax

Bit 1 = 1 � ∩ com xmin

Page 16: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� ExemploExemplo::

AD: A (0000); D(1001) – candidato a recorte

� O algoritmo escolhe D como o pontoexterno, e emprega a aresta superior para orecorte . Obtemos B(0000)

� AB pode é classificado comovisívelEI: E(0100); I (1010) – candidato a recorte

� Requerváriasiterações

16

� Requerváriasiterações

� O primeiro extremo (E) é escolhido, arecortar com a aresta inferior. Obtemos FI,não é visível nem enão-visível.

� I(1010) é escolhido onde aplica recortecom a aresta direita, obtendo G(0000)

� FG pode ser classificado comovisível

Page 17: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D

� Uma questão:

Não Visível

17

I

Visível

Candidato a recorte,mas não vai serrecortado

Page 18: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping

18

Page 19: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D

Exercício:

Execute o recorte dos segmentos de recta da figura, usando o algoritmo de Cohen -Sutherland.

19

Page 20: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

20

Page 21: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky((19841984))

� O algoritmo deCohen-Sutherlandé semdúvidas umdosmais antigos e populares algoritmos utilizados noprocesso declipping

� Poremexistemalgoritmos declipping mais eficienteseque utilizamcomo base aequação paramétricada recta:

∆∆∆∆

21

x = x1 + u∆∆∆∆x;

y = y1 + u∆∆∆∆y,

0 ≤≤≤≤ u ≤≤≤≤ 1; ∆∆∆∆x = x2 – x1; ∆∆∆∆y = y2 – y1

� Utilizando estas equações paramétricasLiang e Barskydesenvolveramo seguinte algoritmo declipping

Page 22: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky� Seguindo a abordagemde Liang-Barskypodemos traduzir

as condições declippingda seguinte forma:xwmin ≤≤≤≤ x1 + u∆∆∆∆x ≤≤≤≤ xwmax

ywmin ≤≤≤≤ y1 + u∆∆∆∆y ≤≤≤≤ ywmax

Cada uma destas quatro inequações pode ser expressacomo:

22

como:upk ≤≤≤≤ qk, k = 1, 2, 3, 4

onde os parâmetrospk eqk são definidos como:p1 = - ∆∆∆∆x , q1 = x1 – xwmin

p2 = ∆∆∆∆x , q2 = xwmax – x1

p3 = - ∆∆∆∆y , q3 = y1 – ywmin

p4 = ∆∆∆∆y , q4 = ywmax – y1

Page 23: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

p1 = - ∆∆∆∆x , q1 = x1 – xwmin p2 = ∆∆∆∆x , q2 = xwmax – x1

p3 = - ∆∆∆∆y , q3 = y1 – ywmin p4 = ∆∆∆∆y , q4 = ywmax – y1

� Algumas observações

� Um segmento paralelo a alguma das paredes dajanela de recortetem pk= 0 onde k = 1, 2, 3 e 4 corresponde à respectiva parede:esquerda, direita , abaixo e acima. Se para além distoqk < 0, entãoo segmentoé totalmente invisível. Se paraos k tais que pk= 0 se

23

o segmentoé totalmente invisível. Se paraos k tais que pk= 0 severifica que qk ≥ 0 então o segmento está contido nas paredesparalelas dajanela de recorte.

� Quandopk < 0 o extremo do segmento de recta vem do exterior dajanela de recorte (com relação à respectiva parede definidapelo valordek) e no caso contrário vem do interior.

� Para cadapk ≠≠≠≠ 0 devemos calcular o valor do parâmetrou quecorresponde ao ponto de intersecção da recta (definida pelosegmento que estamos a analisar) com a extensão dak-parede dajanela de recorte. Por definição termos queuk = qk / pk

Page 24: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

(x1, y1)

(x2, y2)

24

Qual a parte do segmento de que está dentro da janela de recorte?

Page 25: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

p1 = - ∆∆∆∆x , q1 = x1 – xwmin p2 = ∆∆∆∆x , q2 = xwmax – x1

p3 = - ∆∆∆∆y , q3 = y1 – ywmin p4 = ∆∆∆∆y , q4 = ywmax – y1

� Algumas observações

� Para cada segmento de recta podemos calcular os parâmetrosu1 e u2

Estes parâmetros definem que parte do segmento está contidona

janela de recorte.

25

� O valor deu1 (de fora para dentro ,pk < 0)

u1 = max {0, rk’s}, onde rk = qk/pk

� O valor deu2 (de dentro para fora,pk > 0)

u2 = min {1, r k’s}, onde rk = qk/pk

� Seu1 > u2 então o segmento de recta étotalmente invisível

Page 26: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

p1 = - ∆∆∆∆x , q1 = x1 – xwmin p2 = ∆∆∆∆x , q2 = xwmax – x1

p3 = - ∆∆∆∆y , q3 = y1 – ywmin p4 = ∆∆∆∆y , q4 = ywmax – y1

u1 = max {0, rk’s}, onde rk = qk/pk ; para pk < 0u2 = min {1, r k’s}, onde rk = qk/pk ; para pk > 0

� Exemplo

p < 0, p <0

26

p1 < 0, p3 <0u1 = max(0, r1, r3) = r1

p2 > 0, p4 > 0u2 = min(1, r2, r4) = 1

(x1, y1)

(x2, y2)

r3

r1

r4r2

Page 27: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D

(10,20) (25,20)

(15,17)

(15,23)

(5,18)

R2

ClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky� Exemplo

(10,10) (25,10)

(15,17)

(5,12)

(5,18)

R1

Page 28: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

� Exemplo

Calcular p e q para R1

p1 = -∆x = -(15 - 5) = -10

p2 = ∆x = 15 - 5 = 10

p3 = -∆y = -(17 - 12) = -5

28

p4 = ∆y = 17 - 12 = 5

q1 = x1 - xwmin= 5 - 10 = -5

q2 = xwmax - x1 = 25 - 5 = 20

q3 = y1 - ywmin= 12 - 10 = 2

q4 = ywmax - y1 = 20 - 12 = 8

Page 29: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

� Exemplo

Calcular u1 (de fora para dentro) para R1

x=x1+u∆x

y=y1+u∆y , 0≤ u≤ 1

p1 = -10 < 0

p3 = -5 < 0

29

r1 = q1/p1 = -5/-10 = 0.5

r3 = q3/p3 = 2/-5 = - 0.4u1 = max (0, r1, r3) = max (0, 0.5, -0.4) = 0.5

Substituindo na equação paramétrica:

x = 5 + 0.5 * 10 = 10 (o que já sabíamos)

y = 12 + 0.5 * 5 = 14.5 (o que não sabíamos)

Page 30: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DClippingClipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

� Exemplo

Calcular u2 (de dentro para fora) para R1

p2 = 10 > 0

p4 = 5 > 0

30

r2 = q2/p2 = 20/10 = 2

r4 = q4/p4 = 8/5 = 1.6u2 = min (1, r1, r3) = min (1, 2, 1.6) = 1

Como u2 resulta 1, rejeitamos o cálculo de novos valores de dentro para fora.

Page 31: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonos.. IntroduçãoIntrodução

DefiniçõesDefinições ee NotaçõesNotações::� Um polígono é chamadoconvexose o segmento de recta definido por

dois quaisquer pontos interiores do polígono está situadocompletamente dentro do polígono.

� Por convenção, um polígono com os vérticesP1, P2, ..., PN é chamadopositivamente orientado, se uma volta pelos vértices, numa dadaordem,produzum circuito no sentidocontrárioao dos ponteirosdo

31

ordem,produzum circuito no sentidocontrárioao dos ponteirosdorelógio (CCW)

Convexo Não-Convexo

A

B

Orientação Positiva (CCW) vs Orientação Neg ativa (CW)

Page 32: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonos.. IntroduçãoIntrodução

DefiniçõesDefinições ee NotaçõesNotações (cont(cont......))::

� Vectores tridimensionais:� Em ℜ3 podemos definir três vectores coordenadosI, J, K. Estes

vectores são vectores unitários com a direcção e sentido da partedos eixosOx, Oy eOz. Então:

� QualquervectorV podeserdefinido por componentesemfunção

32

� QualquervectorV podeserdefinido por componentesemfunçãode I, J, K:

V = aI + bJ + cK� As componentes [a, b, c] dos vectores V são também as coordenadas de

extremidade do vector V, quando a origem de V se localiza na origem doSCC.

� Em situação geral o vector V com extremos em P0 e P1:

P0P1=(x1-x0)I + (y1-y0)J + (z1-z0)K� O módulo de um vector V, |V| é dado pela fórmula:V a b c= + +2 2 2

Page 33: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonos.. IntroduçãoIntrodução

DefiniçõesDefinições ee NotaçõesNotações (cont(cont......))::� Produto Escalar e Produto Vectorial:

� SejamV1= a1I + b1J + c1K e V2= a2I + b2J + c2K

Produto Escalar: V1 · V2 = a1a2 + b1b2 + c1c2

� Dois vectores são perpendiculares sseV1 · V2 = 0

33

� Dois vectores são paralelos sseV1 = kV2

Produto Vectorial: V1 x V2 é um vector cujo módulo é

|V1 x V2| = | V1 ||V2 | sen (θθθθ) ondeθ é o ângulo entreV1 eV2

V1 x V2 é um vector perpendicular quer aV1 quer aV2 e

cuja direcção é definida pela regra da mano direita:

Page 34: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonos.. IntroduçãoIntrodução

DefiniçõesDefinições ee NotaçõesNotações (cont(cont......))::

� Produto Escalar e Produto Vectorial:

34

Page 35: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonos.. IntroduçãoIntrodução

DefiniçõesDefinições ee NotaçõesNotações (cont(cont......))::

� Produto Vectorial (cont...):� Por definição: V1 x V2 = - (V2 x V1 )

� De notar tambémqueV x V = 0

� Finalmente:SeV1=a1 I

35

SeV1=a1 I

SeV 1=a1 I+a 2J+a3 K e V 2=b1 I+b 2 J+b3 K então

V1× V 2= ∥I J Ka1 a2 a3

b1 b2 b3

∥= ∥a2 a3

b2 b3

∥I+ ∥a1 a3

b1 b3

∥J+ ∥a1 a2

b1 b2

∥K

(a2b3− a3 b2) I+ (a1b3− a3 b1)J+ (a1b2− a2 b1)K

Page 36: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonos.. IntroduçãoIntrodução

� Como podemos determinar se um pontoP(x, y) está localizado àesquerdaou à direita de um segmento orientado definido pelospontosA(x1, y1) eB(x2, y2)?

� Solução:� SejamAB eAP dois vectores.� Por definição deproduto vectorial:

� SeP está a esquerda deAB então o vectorAB x AP aponta segundo adirecçãodo vectorK , queéperpendicularaoplanoxOy;

36

direcçãodo vectorK , queéperpendicularaoplanoxOy;� Se P está a direita deAB então o produto vectorial aponta segundo a

direcção–K

� SendoAB= (x2-x1)I + (y2-y1)J e AP = (x-x1)I + (y –y1)JentãoAB x AP = [(x2-x1) (y-y1) - (y2-y1) (x-x1)]KSendoC = (x2-x1) (y-y1) - (y2-y1) (x-x1), então:� SeC > 0, entãoP está à esquerda deAB� SeC < 0, entãoP está à direita deAB

Page 37: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D

RecorteRecorte dede PolígonosPolígonos

37

Page 38: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2DRecorteRecorte dede PolígonosPolígonosAlgoritmo de Sutherland-Hodgman

� SejaP1, P2, . . ., PN a lista de vértices dopolígonoaser recortado.

� Seja a arestaa, determinada pelos pontos extremosA e B, qualquer aresta dajanela de recorte(orientada positivamente).

� Recortamoscadauma dasarestasdo polígonoem

A

BC

D

Pi-1

Pi

38

� Recortamoscadauma dasarestasdo polígonoemfunção da arestaa do polígono de recorte,construindo assim um novo polígono cujos vérticessão determinados como segue:

� Considere a aresta do polígonoPi-1Pi :

Page 39: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonosAlgoritmo de SutherlandAlgoritmo de Sutherland--HodgmanHodgman

1. Transição Interior-Interior:(ambos os vértices estão contidos nosemi-plano interior da janela derecorte)

39

recorte)

Se ambosPi-1 e Pi estão à esquerdada arestaa, então o vérticePi écolocado na lista de vértices de saída

Page 40: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonosAlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman

2. Transição Exterior-Exterior:(ambos os vértices estãocontidos no semi-plano exterior

40

Se ambosPi-1 e Pi estão à direitada arestaa, nada é colocado nalista de vértice de saída

Page 41: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonosAlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman

3. Transição Interior-Exterior:(quando ocorre uma transição dosemi-espaço interior para oexterior)

41

exterior)

SePi-1 está a esquerda ePi está àdireita da arestaa, é calculado oponto de intersecção I dosegmento da rectaPi-1Pi com aaresta estendidaa, e depoiscolocado na lista de vértices desaída

Page 42: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonosAlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman

4. Transição Exterior4. Transição Exterior--Interior: Interior: (quando ocorre uma transição do semi-espaçoexterior para o interior)

Se P estáa direita e P estáà esquerda

42

Se Pi-1 estáa direita e Pi estáà esquerdadireita da arestaa, é calculado o ponto deintersecçãoI do segmento da rectaPi-1Picoma aresta estendidaa, e depois ambosIe Pi são colocados na lista de vértices desaída

Page 43: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� RecorteRecorte dede PolígonosPolígonosAlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman

O algoritmo deSutherland-Hodgmanprocessa-se por fases, em cada uma dasquais o polígono recortado é novamente sujeito ao recorte de uma das arestasda janela.

Organigrama do Algoritmo:O algoritmocomeçapor fazerentradadosvérticesdeum polígono,

43

O algoritmocomeçapor fazerentradadosvérticesdeum polígono,um de cada vez.

Para cada vértice de entrada serão gerados zero, um o dois vérticesde saída, dependendo da relação dos vértices de entrada com aarestaa de recorte (ver algoritmo).

Atenção: O processo inverso doclipping é denominadosupressão– ocultaçãode uma parte da cena, de forma a torná-la invisível.

O algoritmo deSutherland-Hodgman pode ser modificado para produzirsupressão de imagem.

Page 44: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman (Exemplo(Exemplo 11))

A

BC

D

P1

P2

A

BC

D

P1

P2

P

. I1

i = 2, S = {I1, P2}

44

i=3, S = {I1, P2, P3}

P3

A

BC

D

P2

P3

. I1

A

BC

D

P2

P3

. I1

. I2

i=4, S = {I1, P2, P3, I2}

Page 45: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman (Exemplo(Exemplo 22))

45

Page 46: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman (Exemplo(Exemplo 22))

46

Page 47: Transformações de Visualização 2D: Clippingsweet.ua.pt/pedrocruz/ensino/acg/_downloads/04c_Clipping.pdf · O algoritmo escolhe D como o ponto ... O algoritmo de Cohen-Sutherland

Transformações de Visualização 2D�� AlgoritmoAlgoritmo dede SutherlandSutherland--HodgmanHodgman (Exemplo(Exemplo 22))

47