• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
47
0
0

Texto

(1)

Transformações de

Visualização 2D:

Clipping

Clipping

Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

(2)

Transformações de Visualização 2D

Clipping

Clipping (recorte)

(recorte)

Qualquer procedimento que identifica porções de uma

figura que estão ou dentro ou fora de uma região

específica é chamada de

clipping

Muitos pacotes gráficos combinam a transformação

window-to-viewport

com

clipping

de

primitivas

gráficas de saída.

gráficas de saída.

Algumas aplicações:

extrair parte de uma cena

identificar superfícies visíveis em visões 3D

(3)

Transformações de Visualização 2D

Clipping

(4)

Transformações de Visualização 2D

Clipping

Clipping (cont

(cont...

...))

Clip window: a região na qual um objecto será

“clipado” (geralmente uma área rectangular)

Primitivas:

Pontos

Linhas (segmentos de recta)

Áreas (polígonos)

Curvas

Texto

(5)

Transformações de Visualização 2D

Clipping

Clipping de

de Pontos

Pontos

Assumir que a

clip-window é rectangular

Um ponto

P = (x, y)

será considerado para visualizar se

forem satisfeitas as seguintes condições:

xw

min

≤ x ≤ xw

max

yw

≤ y≤ yw

As arestas da

clip window

podem ser coordenadas da

janela das

world coordinates

ou os límites da

viewport

.

Se alguma das condições não for satisfeita, o objecto é

clipped

, ou seja, fica fora da zona da visualizção

(6)

Transformações de Visualização 2D

Clipping

Clipping de

de Linhas

Linhas (segmentos

(segmentos de

de recta)

recta)

Recorte de um linha contra uma área rectangular resulta sempre num segmento 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 segmentos de recta que intersectam a fronteira I. Identificar os segmentos de recta que intersectam a fronteira

da janela e que portanto, necessitam de ser recortados.

(7)

Transformações de Visualização 2D

Clipping

Clipping de

de Linhas

Linhas (segmentos

(segmentos de

de recta)

recta)

Como identificar os segmentos de recta que intersectam a

fronteira da janela e que portanto, necessitam de ser

recortados?

Todos os segmentos de recta caem numa das seguintes categorias de recorte:

Visível –

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

(8)

Transformações de Visualização 2D

Clipping

Clipping de

de Linhas

Linhas (segmentos

(segmentos de

de recta)

recta)

Exemplo das categorias do segmento:

Não Visível

Visível

(9)

Transformações de Visualização 2D

Clipping

Clipping de

de Linhas

Linhas (segmentos

(segmentos de

de 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

x

min

<x

1

, x

2

<x

max

; y

min

<y

1

,y

2

<y

max

o segmento de recta satisfaz alguma das seguintes desigualdades:

Candidato ao recorte –

x

1

, x

2

>x

max

; x

1

, x

2

<x

min

;

y

min

>y

1

,y

2

;y

1

,y

2

>y

max

(10)

Transformações de Visualização 2D

Algoritmo

Algoritmo de

de Cohen

Cohen--Sutherland

Sutherland ((clipping

clipping))

Organigrama Geral

Testar os pontos extremos, para verificar se o segmento

está todo contido na janela de recorte, evitando cálculos de

intersecção.

Se o segmento é classificado como

candidato a recorte

então:

então:

é dividido em dois segmentos, a partir de uma das

arestas da janela de recorte, de forma que um dos

segmentos possa ser classificado como

não-visível

.

repete-se o processo de divisão do segmento restante

até cada um dos segmentos seja

visível

/

não-visível

(11)

Transformações de Visualização 2D

Algoritmo

Algoritmo de

de Cohen

Cohen--Sutherland

Sutherland ((cont

cont…

…))

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 do segmento de recta:

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

(

)

bit 1 setado: se x < x

min

bit 2 setado: se x > x

max

bit 3 setado: se y < y

min

bit 4 setado: se y > y

max

(12)

Transformações de Visualização 2D

Algoritmo

Algoritmo de

de Cohen

Cohen--Sutherland

Sutherland (cont

(cont...

...))

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

segmento de recta:

(

)

bit 1 setado: se x < x

min

bit 2 setado: se x > x

max

bit 3 setado: se y < y

min

I. O segmento de recta:

é visível se os códigos dos dois pontos extremos são 0000, é não-visível se o AND lógico dos códigos não é 0000 e

é um candidato ao recorte se o AND lógico dos códigos dos pontos terminais é 0000

bit 3 setado: se y < y

min

bit 4 setado: se y > y

max

(13)

Transformações de Visualização 2D

Algoritmo

Algoritmo de

de Cohen

Cohen--Sutherland

Sutherland (cont

(cont...

...))

Exemplo:

H’

H’’

I’

Critérios:

é

visível

se os códigos dos dois pontos extremos são 0000

é

não-visíve

l se o AND lógico dos códigos não é 0000

é um

candidato ao recorte

se o AND lógico dos códigos dos pontos terminais é 0000

(14)

Transformações de Visualização 2D

Algoritmo

Algoritmo de

de Cohen

Cohen--Sutherland

Sutherland (cont

(cont...

...))

Determinam-se os pontos de intersecção dos segmentos

candidatos ao recorte

com a janela

Estes pontos de intersecção subdividem os segmentos de

recta em segmentos de recta mais pequenos, os quais

podem pertencer à categoria

visível

ou

não visível

O segmento de recta da

categoria visível será o segmento

O segmento de recta da

categoria visível será o segmento

de recta recortado

H’

H’’

(15)

Transformações de Visualização 2D

Algoritmo

Algoritmo de

de Cohen

Cohen--Sutherland

Sutherland (cont

(cont...

...))

Os pontos de intersecção são determinados através da resolução das equações que representam o segmento e as linhas-fronteiras da janela

Para janelas rectangulares, cujos lados são paralelos aos eixos coordenados, não precisamos de verificar a intersecção do

segmento de recta com todas as quatro linhas-fronteira.

O algoritmo de Cohen-Sutherland determina a(s) linha(s)-fronteira(s) apropriadas para teste:

apropriadas para teste:

H’

H’’

I’

Bit 4 = 1

com y

max

Bit 3 = 1

com y

min

Bit 2 = 1

com x

max

(16)

Transformações de Visualização 2D

Exemplo

Exemplo::

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

O algoritmo escolhe D como o ponto externo, e emprega a aresta superior para o recorte . Obtemos B(0000)

AB pode é classificado como visível

EI: E(0100); I (1010) – candidato a recorte

Requer várias iterações Requer várias iterações

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

I(1010) é escolhido onde aplica recorte com a aresta direita, obtendo G(0000)

(17)

Transformações de Visualização 2D

Uma questão:

Não Visível

Visível

Candidato a recorte,

mas não vai ser recortado

(18)

Transformações de Visualização 2D

Clipping

(19)

Transformações de Visualização 2D

Exercício:

Execute o recorte dos

segmentos de recta da

figura, usando o

algoritmo de Cohen

(20)
(21)

Transformações de Visualização 2D

Clipping

Clipping:: Algoritmo

Algoritmo de

de Liang

Liang--Barsky

Barsky ((1984

1984))

O algoritmo de

Cohen-Sutherland

é sem dúvidas um dos

mais antigos e populares algoritmos utilizados no

processo de

clipping

Porem existem algoritmos de

clipping mais eficientes

e

que utilizam como base a

equação paramétrica

da recta:

∆∆∆∆

x = x

1

+ u

∆∆∆∆

x;

y = y

1

+ u

∆∆∆∆

y,

0

≤≤≤≤

u

≤≤≤≤

1;

∆∆∆∆

x = x

2

– x

1

;

∆∆∆∆

y = y

2

– y

1

Utilizando estas equações paramétricas

Liang

e

Barsky

(22)

Transformações de Visualização 2D

Clipping

Clipping:: Algoritmo

Algoritmo de

de Liang

Liang--Barsky

Barsky

Seguindo a abordagem de

Liang-Barsky

podemos traduzir

as condições de

clipping

da seguinte forma:

xw

min

≤≤≤≤

x

1

+ u

∆∆∆∆

x

≤≤≤≤

xw

max

yw

min

≤≤≤≤

y

1

+ u

∆∆∆∆

y

≤≤≤≤

yw

max

Cada uma destas quatro inequações pode ser expressa

como:

como:

up

k

≤≤≤≤

q

k

, k = 1, 2, 3, 4

onde os parâmetros

p

k

e

q

k

são definidos como:

p

1

= -

∆∆∆∆

x , q

1

= x

1

– xw

min

p

2

=

∆∆∆∆

x , q

2

= xw

max

– x

1

p

3

= -

∆∆∆∆

y , q

3

= y

1

– yw

min

p

4

=

∆∆∆∆

y , q

4

= yw

max

– y

1

(23)

Transformações de Visualização 2D

Clipping

Clipping:: 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 da janela de recorte tem pk= 0 onde k = 1, 2, 3 e 4 corresponde à respectiva parede: esquerda, direita, abaixo e acima. Se para além disto qk < 0, então o segmento é totalmente invisível. Se para os k tais que pk= 0 se o segmento é totalmente invisível. Se para os k tais que pk= 0 se verifica que qk0 então o segmento está contido nas paredes

paralelas da janela de recorte.

Quando pk < 0 o extremo do segmento de recta vem do exterior da janela de recorte (com relação à respectiva parede definida pelo valor de k) e no caso contrário vem do interior.

Para cada pk ≠≠≠≠ 0 devemos calcular o valor do parâmetro u que corresponde ao ponto de intersecção da recta (definida pelo

(24)

Transformações de Visualização 2D

Clipping

Clipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

(x1, y1)

(x2, y2)

(25)

Transformações de Visualização 2D

Clipping

Clipping:: 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âmetros u1 e u2 Estes parâmetros definem que parte do segmento está contido na janela de recorte.

O valor de u1 (de fora para dentro , pk< 0) u1= max {0, rk’s}, onde rk= qk/pk

O valor de u2 (de dentro para fora, pk > 0) u2= min {1, rk’s}, onde rk= qk/pk

(26)

Transformações de Visualização 2D

Clipping

Clipping:: 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< 0

u2= min {1, rk’s}, onde rk= qk/pk ; para pk> 0

Exemplo p < 0, p <0 p1 < 0, p3 <0 u1 = max(0, r1, r3) = r1 p2 > 0, p4 > 0 u2 = min(1, r2, r4) = 1 (x1, y1) (x2, y2) r r1 r4 r2

(27)

Transformações de Visualização 2D

(10,20) (25,20) (15,17) (15,23) (5,18) R2 Clipping

Clipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

Exemplo (10,10) (25,10) (15,17) (5,12) (5,18) R1

(28)

Transformações de Visualização 2D

Clipping

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

p4 =

y = 17 - 12 = 5

q1 = x1 - x

wmin

= 5 - 10 = -5

q2 = x

wmax

- x1 = 25 - 5 = 20

q3 = y1 - y

wmin

= 12 - 10 = 2

q4 = y

wmax

- y1 = 20 - 12 = 8

(29)

Transformações de Visualização 2D

Clipping

Clipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

Exemplo

Calcular u1 (

de fora para dentro

) para R1

x=x

1

+u∆x

y=y

1

+u∆y , 0≤ u≤ 1

p1 = -10 < 0

p3 = -5 < 0

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

r3 = q3/p3 = 2/-5 = - 0.4

u1 =

max

(

0

, r1, r3) =

max

(

0

, 0.5, -0.4) = 0.5

(30)

Transformações de Visualização 2D

Clipping

Clipping:: AlgoritmoAlgoritmo dede LiangLiang--BarskyBarsky

Exemplo

Calcular u2 (

de dentro para fora

) para R1

p2 = 10 > 0

p4 = 5 > 0

r2 = q2/p2 = 20/10 = 2

r4 = q4/p4 = 8/5 = 1.6

u2 =

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.

(31)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos.. Introdução

Introdução

Definições

Definições ee Notações

Notações::

Um polígono é chamado convexo se o segmento de recta definido por dois quaisquer pontos interiores do polígono está situado completamente dentro do polígono.

Por convenção, um polígono com os vértices P1, P2, ..., PNé chamado positivamente orientado, se uma volta pelos vértices, numa dada ordem, produz um circuito no sentido contrário ao dos ponteiros do ordem, produz um circuito no sentido contrário ao dos ponteiros do relógio (CCW)

A B

(32)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos.. Introdução

Introdução

Definições

Definições ee Notações

Notações (cont

(cont...

...))::

Vectores tridimensionais:

Em ℜ3 podemos definir três vectores coordenados I, J, K. Estes

vectores são vectores unitários com a direcção e sentido da parte dos eixos Ox, Oy e Oz. Então:

Qualquer vector V pode ser definido por componentes em função Qualquer vector V pode ser definido por componentes em função de 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 do SCC.

Em situação geral o vector V com extremos em P0e P1:

P

0

P

1

=(x

1

-x

0

)I + (y

1

-y

0

)J + (z

1

-z

0

)K

(33)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos.. Introdução

Introdução

Definições

Definições ee Notações

Notações (cont

(cont...

...))::

Produto Escalar e Produto Vectorial:

Sejam V1= a1I + b1J + c1K e V2= a2I + b2J + c2K

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

Dois vectores são perpendiculares sse V1 · V2 = 0 Dois vectores são paralelos sse V1 = kV2

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

|V1 x V2| = | V1 ||V2 | sen (θθθθ) onde θ é o ângulo entre V1 e V2 V1 x V2 é um vector perpendicular quer a V1 quer a V2 e cuja direcção é definida pela regra da mano direita:

(34)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos.. Introdução

Introdução

Definições

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

(35)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos.. Introdução

Introdução

Definições

Definições ee Notações

Notações (cont

(cont...

...))::

Produto Vectorial (cont...):

Por definição: V1 x V2 = - (V2 x V1 )

De notar também que V x V = 0

Finalmente:

Se V1=a1I Se V1=a1I

Se V

1

=a

1

I+a

2

J+a

3

K e V

2

=b

1

I+b

2

J+b

3

K então

V

1

×

V

2

=

I

J

K

a

1

a

2

a

3

b

1

b

2

b

3

=

a

2

a

3

b

2

b

3

I+

a

1

a

3

b

1

b

3

J+

a

1

a

2

b

1

b

2

K

(

a

2

b

3

a

3

b

2

)

I+

(

a

1

b

3

a

3

b

1

)

J+

(

a

1

b

2

a

2

b

1

)

K

(36)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos.. Introdução

Introdução

Como podemos determinar se um ponto P(x, y) está localizado à esquerda ou à direita de um segmento orientado definido pelos pontos A(x1, y1) e B(x2, y2)?

Solução:

Sejam AB e AP dois vectores.

Por definição de produto vectorial:

Se P está a esquerda de AB então o vector AB x AP aponta segundo a

direcção do vector K, que é perpendicular ao plano xOy;

direcção do vector K, que é perpendicular ao plano xOy;

Se P está a direita de AB então o produto vectorial aponta segundo a

direcção –K

Sendo AB= (x2-x1)I + (y2-y1)J e AP = (x-x1)I + (y –y1)J

então AB x AP = [(x2-x1) (y-y1) - (y2-y1) (x-x1)]K

Sendo C = (x2-x1) (y-y1) - (y2-y1) (x-x1), então: Se C > 0, então P está à esquerda de AB

(37)

Transformações de Visualização 2D

Recorte

(38)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos

Algoritmo de Sutherland-Hodgman

Seja P1, P2, . . ., PN a lista de vértices do polígono a ser recortado.

Seja a aresta a, determinada pelos pontos extremos A e B, qualquer aresta da janela de recorte (orientada positivamente).

Recortamos cada uma das arestas do polígono em

A B C D Pi-1 Pi

Recortamos cada uma das arestas do polígono em função da aresta a do polígono de recorte, construindo assim um novo polígono cujos vértices são determinados como segue:

(39)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos

Algoritmo de Sutherland

Algoritmo de Sutherland--Hodgman

Hodgman

1.

Transição

Interior-Interior:

(ambos os vértices estão contidos no

semi-plano interior da janela de

recorte)

recorte)

Se ambos

P

i-1

e

P

i

estão à esquerda

da aresta

a

, então o vértice

P

i

é

colocado na lista de vértices de saída

(40)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos

Algoritmo

Algoritmo de

de Sutherland

Sutherland--Hodgman

Hodgman

2. Transição Exterior-Exterior:

(ambos

os

vértices

estão

contidos no semi-plano exterior

Se ambos

P

i-1

e

P

i

estão à direita

da aresta

a

, nada é colocado na

lista de vértice de saída

(41)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos

Algoritmo

Algoritmo de

de Sutherland

Sutherland--Hodgman

Hodgman

3. Transição Interior-Exterior:

(quando ocorre uma transição do

semi-espaço

interior

para

o

exterior)

exterior)

Se

P

i-1

está a esquerda e

P

i

está à

direita da aresta

a

, é calculado o

ponto

de

intersecção

I

do

segmento da recta

P

i-1

P

i

com a

aresta

estendida

a

,

e

depois

colocado na lista de vértices de

(42)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos

Algoritmo

Algoritmo de

de Sutherland

Sutherland--Hodgman

Hodgman

4. Transição Exterior

4. Transição Exterior--Interior:

Interior: (quando

ocorre uma transição do semi-espaço

exterior para o interior)

Se

P

está a direita e

P

está à esquerda

Se

P

i-1

está a direita e

P

i

está à esquerda

direita da aresta

a

, é calculado o ponto de

intersecção

I

do segmento da recta

P

i-1

P

i

com a aresta estendida

a

, e depois ambos

I

e

P

i

são colocados na lista de vértices de

saída

(43)

Transformações de Visualização 2D

Recorte

Recorte de

de Polígonos

Polígonos

Algoritmo

Algoritmo de

de Sutherland

Sutherland--Hodgman

Hodgman

O algoritmo de Sutherland-Hodgman processa-se por fases, em cada uma das quais o polígono recortado é novamente sujeito ao recorte de uma das arestas da janela.

Organigrama do Algoritmo:

O algoritmo começa por fazer entrada dos vértices de um polígono, O algoritmo começa por fazer entrada dos vértices de um polígono, um de cada vez.

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

Atenção: O processo inverso do clipping é denominado supressão – ocultação

(44)

Transformações de Visualização 2D

Algoritmo

Algoritmo dede SutherlandSutherland--HodgmanHodgman (Exemplo(Exemplo 11))

A B C D P1 P2 A B C D P1 P2 P

.

I1 i = 2, S = {I1, P2} i=3, S = {I1, P2, P3} P3 A B C D P2 P

.

I1 A B C D P2 P

.

I1

.

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

(45)

Transformações de Visualização 2D

Algoritmo

(46)

Transformações de Visualização 2D

Algoritmo

(47)

Transformações de Visualização 2D

Algoritmo

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

2. Identifica as personagens do texto.. Indica o tempo da história. Indica o espaço da história. Classifica as palavras quanto ao número de sílabas. Copia do texto três

[r]

De acordo com o Consed (2011), o cursista deve ter em mente os pressupostos básicos que sustentam a formulação do Progestão, tanto do ponto de vista do gerenciamento

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Desta forma, foram criadas as seguintes hipóteses de investigação: H1 – O compromisso organizacional e o engagement são diferentes para as categorias dos militares dos

Os dados referentes aos sentimentos dos acadêmicos de enfermagem durante a realização do banho de leito, a preparação destes para a realização, a atribuição