• Nenhum resultado encontrado

Dr. Sylvio Barbon Junior. Departamento de Computação - UEL. 1 o Semestre de 2015

N/A
N/A
Protected

Academic year: 2021

Share "Dr. Sylvio Barbon Junior. Departamento de Computação - UEL. 1 o Semestre de 2015"

Copied!
49
0
0

Texto

(1)

Introdu¸c˜ ao a Computa¸c˜ ao Gr´ afica [5COP100]

Dr. Sylvio Barbon Junior

Departamento de Computa¸c˜ao - UEL

1

o

Semestre de 2015

(2)

Assunto

Aula 2

Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

2 de 45

(3)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Sum´ ario

• Raster e Vector graphics;

• Programas em Java 2D;

• Geometria de Objetos:

◦ B´ asica;

◦ Java 2D;

• Transforma¸ c˜ oes Geom´ etricas em Java 2D;

• Coordenadas Homogˆ eneas;

• Aplica¸ c˜ oes de Transforma¸ c˜ oes;

• Anima¸ c˜ ao e movimento baseado em Transforma¸ c˜ ao;

• Movimento em Java 2D;

• Interpola¸ c˜ ao para mudan¸cas cont´ınuas;

• Interpola¸ c˜ ao em Java 2D.

(4)

Raster vs Vector Graphics

Figura: Imagem original, vetorizada e raster [Klawonn, 2012]

4 de 45

(5)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Vector vs Raster Graphics

• Qual o modelo que descreve um objeto antes de sua renderiza¸ c˜ ao?

• Vector, Vetorizada ou vector-oriented:

◦ Modelada pela combina¸ c˜ ao de linhas, retˆ angulos, c´ırculos, elipses e arcos;

◦ A rela¸ c˜ ao entre as formas ´ e expressa via equa¸ c˜ oes matem´ aticas;

◦ Possibilita a mudan¸ ca de escala sem perda de qualidade;

◦ Ideal para logotipos, posteres etc.

◦ Adobe Illustrator, Corel Draw e Inkscape.

◦ Formatos: AI, CDR, CGM, SVG, VML entre outros

(6)

Raster vs Vector Graphics

Figura: Imagem vector [des, 2015]

6 de 45

(7)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Vector vs Raster Graphics

• Raster ou pixel-oriented:

◦ Formada por uma matriz de pixels, cada ponto tem um valor de cor associado;

◦ E dependente de resolu¸ ´ c˜ ao;

◦ Todas as formas s˜ ao convertidas em pixels;

◦ Photoshop, Gimp, MS Paint

◦ GIF, BMP, TIFF, JPEG, XCF, JPEG e outros v´ arios.

(8)

Raster vs Vector Graphics

Figura: Imagem raster [des, 2015]

8 de 45

(9)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Vector vs Raster Graphics

• scan conversion: convers˜ ao de vector-oriented para imagem raster

• aliasing effect: ocorre na forma de bordas serrilhadas chamadas

de jaggies ou staircasing. Uso de t´ ecnicas anti-aliasing para

corre¸c˜ ao.

(10)

Raster vs Vector Graphics

Figura: Corre¸c˜ ao anti-aliasing [ali, 2015]

10 de 45

(11)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Raster vs Vector Graphics

Figura: Imagem Vector e diferentes resolu¸c˜ oes de raster [Klawonn, 2012]

(12)

Programas em Java 2D

• Java 2D ´ e uma API pertencente ao kernel a partir do Java 2;

• Apresenta algumas extens˜ oes do pacote AWT (Abstract Windowing Toolkit) e Swing;

Figura: API Java 2D [Klawonn, 2012]

12 de 45

(13)

Listing 1: Primeiro Exemplo Java 2D [Klawonn, 2012]

i m p o r t j a v a . awt .∗;

p u b l i c c l a s s S i m p l e J a v a 2 D E x a m p l e e x t e n d s Frame {

S i m p l e J a v a 2 D E x a m p l e ( ) {

a d d W i n d o w L i s t e n e r (new MyFinishWindow ( ) ) ; }

p u b l i c v o i d p a i n t ( G r a p h i c s g ) {

G r a p h i c s 2 D g2d = ( G r a p h i c s 2 D ) g ; g2d . d r a w S t r i n g ( ” H e l l o w o r l d ! ” , 3 0 , 5 0 ) ; }

p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g v ) {

S i m p l e J a v a 2 D E x a m p l e f = new S i m p l e J a v a 2 D E x a m p l e ( ) ; f . s e t T i t l e ( ” The f i r s t J a v a 2D p r o g r a m ” ) ;

f . s e t S i z e ( 3 5 0 , 8 0 ) ; f . s e t V i s i b l e (t r u e) ; }

}

(14)

Objetos Geom´ etricos B´ asicos

• Pontos: s˜ ao definidos pelas coordenadas x e y.

• Linhas, polylines ou curvas: s˜ ao definidas por um ou mais pontos

• ´ areas ou poligonos: podem ser preenchidas por cores ou texturas;

• curvas: s˜ ao definidas como polinˆ omios param´ etricos

Figura: Curva quadr´ atica e c´ ubica [Klawonn, 2012]

13 de 45

(15)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Objetos Geom´ etricos B´ asicos

• E poss´ıvel criar pol´ıgonos complexos com a combina¸ ´ c˜ ao de outras

´

areas mais simples usando opera¸ c˜ oes como uni˜ ao (union), intersec¸c˜ ao (intersection), diferen¸ ca (difference) e diferen¸ ca sim´ etrica (symmetric difference).

Figura: Images das opera¸ c˜ oes de Uni˜ ao, Intersec¸ c˜ ao, Diferen¸ ca e Deferen¸ ca

sim´ etrica entre um c´ırculo e um retˆ angulo. [Klawonn, 2012]

(16)

Objetos Geom´ etricos B´ asicos em Java 2D

• Classe abstrata Shape

Figura: Exemplo de formas do Java 2D API. [Klawonn, 2012]

15 de 45

(17)

Listing 2: Exemplos Java 2D [Klawonn, 2012]

L i n e 2 D . D o u b l e l i n e = new L i n e 2 D . D o u b l e ( x1 , y1 , x2 , y2 ) ;

QuadCurve2D . D o u b l e qc = new QuadCurve2D . D o u b l e ( x1 , y1 , c t r l x , c t r l y , x2 , y2 ) ;

C u b i c C u r v e 2 D . D o u b l e c c = new C u b i c C u r v e 2 D . D o u b l e ( x1 , y1 , c t r l x 1 , c t r l y 1 , c t r l x 2 , c t r l y 2 , x2 , y2 ) ;

(18)

Objetos Geom´ etricos B´ asicos em Java 2D

Figura: Exemplo General Path. [Klawonn, 2012]

16 de 45

(19)

Listing 3: Exemplos General Path [Klawonn, 2012]

G e n e r a l P a t h gp = new G e n e r a l P a t h ( ) ; gp . moveTo ( 6 0 , 1 2 0 ) ;

gp . l i n e T o ( 8 0 , 1 2 0 ) ; // f r o n t u n d e r b o d y gp . quadTo ( 9 0 , 1 4 0 , 1 0 0 , 1 2 0 ) ; // f r o n t w h e e l gp . l i n e T o ( 1 6 0 , 1 2 0 ) ; // m i d d l e u n d e r b o d y gp . quadTo ( 1 7 0 , 1 4 0 , 1 8 0 , 1 2 0 ) ; // r e a r w h e e l gp . l i n e T o ( 2 0 0 , 1 2 0 ) ; // r e a r u n d e r b o d y gp . c u r v e T o ( 1 9 5 , 1 0 0 , 2 0 0 , 8 0 , 1 6 0 , 8 0 ) ; // r e a r gp . l i n e T o ( 1 1 0 , 8 0 ) ; // r o o f

gp . l i n e T o ( 9 0 , 1 0 0 ) ; // w i n d s c r e e n gp . l i n e T o ( 6 0 , 1 0 0 ) ; // b o n n e t gp . l i n e T o ( 6 0 , 1 2 0 ) ; // f r o n t

(20)

Exerc´ıcios

1. Desenhe um retˆ angulo com as pontas arredondadas.

2. Implemente um c´ odigo para desenhar um “peixe”como da imagem abaixo. Utilize as opera¸ c˜ oes entre poligonos.

17 de 45

(21)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Transforma¸c˜ oes Geom´ etricas

• S˜ ao opera¸c˜ oes que podem ser utilizadas visando a altera¸ c˜ ao de algumas caracter´ısticas como: posi¸ c˜ ao, orienta¸ c˜ ao, forma e tamanho.

• As transforma¸c˜ oes s˜ ao represent´ aveis por equa¸ c˜ oes;

• Um modelo simples ´ e a representa¸ c˜ ao das manipula¸ c˜ oes por meio de matrizes (usado amplamente);

• As principais transforma¸ c˜ oes s˜ ao:

◦ Transla¸ c˜ ao (translation);

◦ Escala (scale);

◦ Rota¸ c˜ ao (rotation);

◦ Cisalhamento (shear);

(22)

Transforma¸c˜ oes Geom´ etricas - Ponto e Produto

• Um ponto pode ser escrito como:

ponto = P (x, y) =(x, y)

T

∈ R

2

• O produto de dois vetores u e v pode descrever as trasnforma¸ c˜ oes, seguindo a seguinte estrutura:

u

T

× v = (u

1

, ..., u

n

) ×

 v

1

...

v

2

 =

n

P

i=1

u

i

× v

i

19 de 45

(23)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Transforma¸c˜ oes Geom´ etricas - Transla¸c˜ ao

• A opera¸c˜ ao de transla¸ c˜ ao pode ser descrita como:

P

0

= P + T = x

y

+ ∆x

∆y

=

( x

0

= x + ∆x y

0

= y + ∆y

• Exemplo com T = (140, 80)

T

(24)

Transforma¸c˜ oes Geom´ etricas - Escala

• A opera¸c˜ ao de escala pode ser descrita como:

P

0

= P ·T = x

y

·

s

x

0 0 s

y

=

( x

0

= x · s

x

y

0

= y · s

y

• Exemplo com s

x

= 2 e s

y

= 0.5:

21 de 45

(25)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Transforma¸c˜ oes Geom´ etricas - Rota¸c˜ ao

• A opera¸c˜ ao de rota¸ c˜ ao pode ser descrita como:

P

0

= P ·T = x

y

·

cos(θ) −sen(θ) sen(θ) cos(θ)

=

( x

0

= x·cos(θ)-y·sen(θ) y

0

= x·sen(θ)+y·cos(θ)

• Exemplo com θ =45

o

:

(26)

Transforma¸c˜ oes Geom´ etricas - Cisalhamento

• A opera¸c˜ ao de cisalhamento pode ser descrita como:

P

0

= P ·T = x

y

·

1 s

x

s

y

1

=

( x

0

= x + s

x

·y y

0

= y + s

y

·x

• Exemplo com com s

x

= 1 e s

y

= 0:

23 de 45

(27)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Coordenadas Homogˆ eneas

• Para que as opera¸c˜ oes sejam combinadas facilmente, podemos trat´ a-las como coordenadas homogˆ eneas. Isso pode ser feito adicionando uma terceira coordenada ao ponto. Assim, um ponto (x, y) ´ e representado como (x, y, W ).

• (2,3,6) e (4, 6, 12) ´ e o mesmo ponto representado por diferentes triplas.

• Se W ´ e a coordenada n˜ ao 0, podemos dividir (x, y, W ) por ela,

obtendo (

Wa

,

Wb

, 1).

(28)

Coordenadas Homogˆ eneas

25 de 45

(29)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Exerc´ıcio com Transforma¸c˜ oes

1. Implemente um aplicativo com Java 2D para movimentar o

”peixe”do exerc´ıcio 2 da primeira atividade. Lembrando que o

”peixe”somente caminha em uma dire¸ c˜ ao, assim vocˆ e deve

implementar somente a transla¸ c˜ ao em uma dire¸ c˜ ao e utilizar a

rota¸c˜ ao para modificar a orienta¸ c˜ ao do objeto. Utilize o teclado

para realizar os movimentos, para tal utilize uma inner class que

estenda KeyAdapter e n˜ ao esque¸ ca de adicionar um KeyListener

(addKeyListener) na classe Frame.

(30)

Aplica¸c˜ oes de Transforma¸c˜ oes

• Foi observado que as aplica¸c˜ oes normalemente exigem uma s´ erie de transforma¸c˜ oes de um sistema de coordenadas para outro.

• Os objetos podem ser descritos em um ambiente diferente do Cartesiano (coordenadas polares e el´ıpticas).

• Por exemplo, aplica¸c˜ oes em Java usam um sistema pr´ oprio, diferente do cartesiano, ´ e um sistema de coordenadas globais.

• Neste caso ´ e necess´ ario considerar especificamente a transforma¸ c˜ ao entre dois sistemas de coordenadas.

27 de 45

(31)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Aplica¸c˜ oes de Transforma¸c˜ oes

(32)

Aplica¸c˜ oes de Transforma¸c˜ oes

Coordenadas El´ıpticas

29 de 45

(33)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Aplica¸c˜ oes de Transforma¸c˜ oes

• Para transformar um objeto de um sistema de coordenadas xy para um sistema x

0

y

0

com origens em (0, 0) e (x

0

, y

0

) com um ˆ angulo de orienta¸c˜ ao θ entre os eixos x e x

0

devemos determinar a transforma¸c˜ oes que superp˜ oe os eixos xy aos eixos x

0

y

0

.

• Passos:

1. Transladar o sistema x

0

y

0

para que sua origem coincida com xy : T (−x

0

, −y

0

)

2. Rotacionaro eixo x

0

para coincidir com o eixo x: R(−θ).

• Concatenando as equa¸ c˜ oes de transforma¸ c˜ ao, tem-se:

M

xy

, x

0

y

0

= R(−θ) ·T(-x

0

, −y

0

)

(34)

Aplica¸c˜ oes de Transforma¸c˜ oes

• Alternativamente, pode-se estabelecer a orienta¸ c˜ ao por meio de um vetor V na dire¸c˜ ao positiva do eixo y

0

, passando pela origem de xy : v =

|VV|

= (v

x

, v

y

)

• O vetor unit´ ario ao longo do eixo x

0

rotacionado v em 90

o

no sentido hor´ ario:

u = (v

y

, −v

x

) = (u

x

, u

y

)

• A matriz de rota¸ c˜ ao seria:

R =

u

x

u

y

0 v

x

v

y

0

0 0 1

 =

0 1 0

−1 0 0

0 0 1

31 de 45

(35)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Composi¸c˜ ao de Transforma¸c˜ oes

• Exemplo: Rota¸c˜ ao em θ com rela¸ c˜ ao ao ponto mais pr´ oximo da origem:

T (−x

1

, −y

1

) ·R(θ) ·T(x

1

, y

1

) =

1 0 −x

1

0 1 −y

1

0 0 1

 ·

cosθ −senθ 0 senθ cosθ 0

0 0 1

·

1 0 x

1

0 1 y

1

0 0 1

=

cosθ −senθ x

1

(1 − cosθ) + y

1

· senθ senθ cosθ y

1

(1 − cosθ) + x

1

· senθ

0 0 1

(36)

Aplica¸c˜ oes de Transforma¸c˜ oes

Rota¸ c˜ ao com base em ponto

33 de 45

(37)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Composi¸c˜ ao de Transforma¸c˜ oes

• Exemplo: Rota¸c˜ ao em θ e Escala e Transla¸ c˜ ao com rela¸ c˜ ao ao ponto central do objeto:

T (−x

1

, −y

1

) ·R(θ) ·S(s

x

, s

y

) ·T(x

2

, y

2

)

(38)

Aplica¸c˜ oes de Transforma¸c˜ oes

Escala, Rota¸c˜ ao e mudan¸ ca de dire¸ c˜ ao

35 de 45

(39)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Exerc´ıcio com Composi¸c˜ ao de Transforma¸c˜ oes

1. Implemente um aplicativo com Java 2D para movimentar um ve´ıculo para a frente (cima) direita e esquerda para desviar dos obst´ aculos que ser˜ ao aleatoriamente criados na estrada. Os objetos dever˜ ao ”surgir”a frente do ve´ıculo, para tal, utilize a

transforma¸c˜ ao de escala. Ser´ a necess´ ario implementar Runnable e

o m´ etodo Run(). N˜ ao esquecer do new Thread(this) e do

Thread.sleep(tempoEmMilisegundos).

(40)

Exerc´ıcio com Composi¸c˜ ao de Transforma¸c˜ oes

Interface modelo - Enduro (atari)

37 de 45

(41)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Java 2D

• Em Java 2D ´ e poss´ıvel trabalhar com transforma¸ c˜ oes geom´ etricas por meio da classe AffineTransform.

• O construtor b´ asico ´ e formado:

AffineTransform at = new AffineTransform(a,b,c,d,e,f)

(42)

Java 2D

• As transforma¸c˜ oes elementares podem ser realizadas pelos m´ etodos:

◦ Rota¸ c˜ ao: at.setToRation(a);

◦ Rota¸ c˜ ao a um ponto: at.setToRotation(a, x, y);

◦ Escala: at.setToScale(sx, sy);

◦ Cisalhamento: at.setToShear(sx, sy);

◦ Transla¸ c˜ ao: at.setToTranslation(dx, dy);

• As transforma¸ c˜ oes podem ser m´ ultiplas, e realizadas atrav´ es de concate¸ c˜ ao:

◦ at1.concatenate(at2);

◦ at1.preConcatenate(at2);

39 de 45

(43)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Java 2D

• As modifica¸c˜ oes podem ser feitas, aplicadas a um objeto:

Shape transformedShape = at.createTransformedShape(s);

• Objetos criados Graphics2D podem ser aplicados ` a AffineTransform:

g2d.transform(at);

(44)

A f f i n e T r a n s f o r m yUp = new A f f i n e T r a n s f o r m ( ) ; yUp . s e t T o S c a l e ( 1 ,−1 ) ;

A f f i n e T r a n s f o r m t r a n s l a t e = new A f f i n e T r a n s f o r m ( ) ;

t r a n s l a t e . s e t T o T r a n s l a t i o n ( x O f f s e t , w i n d o w H e i g h t−y O f f s e t ) ; yUp . p r e C o n c a t e n a t e ( t r a n s l a t e ) ;

g2d . t r a n s f o r m ( yUp ) ;

41 de 45

(45)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Interpola¸c˜ ao para mudan¸cas cont´ınuas

• Ao inv´ es de projetar quadro a quadro cada uma das mudan¸ cas, ´ e poss´ıvel descrevˆ e-la baseada em uma posi¸c˜ ao inicial e final.

• Os movimentos (ou mudan¸cas) intermedi´ arias podem ser modeladas por interpola¸c˜ oes entre as posi¸ c˜ oes especificadas.

• Exemplo:

p

0

= (0, 0)

T

e p

1

= (200, 100)

T

A interpola¸ c˜ ao pode ser dada como:

p

α

= (1 − α) · p

0

+ α · p

1

, α ∈ [0, 1]

Para um valor de α = 0.5 , temos a transforma¸ c˜ ao “pela metade”.

(46)

Tipos de linhas em Java 2D

• Por meio da classe BasicStroke ´ e poss´ıvel criar linhas de tipos diferentes, escolhendo a espessura, forma do final da linha e ligra¸ c˜ ao entre linhas.

• Exemplo:

BasicStroke bsLinhaFina = new BasicStroke (3.0f);

g2d.setStroke(bsLinhaFina);

42 de 45

(47)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Quest˜ ao do POSCOMP - Quest˜ ao 1

(48)

Quest˜ ao do POSCOMP - Quest˜ ao 2

44 de 45

(49)

Aula 2 - Princ´ıpios b´ asicos de imagens de duas dimens˜ oes

Referˆ encias

(2015).

Aliasing.

http://domopomo.weebly.com/.

acessado em 23/03/2015.

(2015).

Vector e raster.

http://99designs.com/.

acessado em 23/03/2015.

Klawonn, F. (2012).

Introduction to computer graphics: using Java 2D and 3D.

Springer Science & Business Media.

Referências

Documentos relacionados

O fabricante não vai aceitar nenhuma reclamação dos danos causados pela não observação deste manual ou por qualquer mudança não autorizada no aparelho.. Favor considerar

Acidente de Trabalho é o que ocorre pelo exercício do trabalho a serviço da empresa, provocando lesão corporal ou perturbação funcional que cause a morte, a perda ou

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

A nutrição enteral (NE), segundo o Ministério da Saúde do Brasil, designa todo e qualquer “alimento para fins especiais, com ingestão controlada de nutrientes, na forma isolada

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)

Nos tempos atuais, ao nos referirmos à profissão docente, ao ser professor, o que pensamos Uma profissão indesejada por muitos, social e economicamente desvalorizada Podemos dizer que

Este trabalho tem como objetivo geral avaliar a quantidade de água pluvial que pode ser aproveitada após infiltrar em um pavimento permeável de concreto

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á