INF 1366 – Computação Gráfica...

41
1 Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo [email protected] http://www.tecgraf.puc-rio.br/~abraposo/INF1366 Alberto Raposo – PUC-Rio Sistemas de Coordenadas Objetos em Computação Gráfica possuem descrições numéricas (modelos) que caracterizam suas formas e dimensões. Esses números se referem a um sistema de coordenadas, normalmente o sistema Cartesiano de coordenadas: x, y e z. Em alguns casos, precisamos de mais de um sistema de coordenadas: Um sistema local para descrever partes individuais de uma máquina, por exemplo, que pode ser montada especificando-se a relação de cada sistema local das várias peças. John Dingliana, 2004

Transcript of INF 1366 – Computação Gráfica...

Page 1: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

1

Alberto Raposo – PUC-Rio

INF 1366 – Computação Gráfica Interativa

Transformações

Alberto B. [email protected]

http://www.tecgraf.puc-rio.br/~abraposo/INF1366

Alberto Raposo – PUC-Rio

Sistemas de Coordenadas• Objetos em Computação Gráfica possuem descrições

numéricas (modelos) que caracterizam suas formas e dimensões.

• Esses números se referem a um sistema de coordenadas, normalmente o sistema Cartesiano de coordenadas: x, y e z.

• Em alguns casos, precisamos de mais de um sistema de coordenadas:– Um sistema local para descrever partes individuais de uma

máquina, por exemplo, que pode ser montada especificando-se a relação de cada sistema local das várias peças.

John Dingliana, 2004

Page 2: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

2

Alberto Raposo – PUC-Rio

Transformações• Em alguns casos, objetos exibem simetrias, de modo

que apenas parte deles precisa ser descrita, pois o resto pode ser construído por reflexão, rotação e/outranslação do pedaço original.

• Um projetista pode querer visualizar um objeto sob vários pontos de vista, rotacionando-o ou movendo uma câmera virtual.

• Em animação, um ou mais objetos podem precisar se mover em relação ao outro, de modo que seus sistemas de coordenadas locais devam ser transladados e rotacionados ao longo da animação.

John Dingliana, 2004

Alberto Raposo – PUC-Rio

etc...

Exemplo 1

• Partes do objeto definidas em sistemas de coordenadas locais:

• Objeto “montado” por meio de transformação das partes constituintes:

John Dingliana, 2004

Page 3: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

3

Alberto Raposo – PUC-Rio

5 etapas de uma animação de um cubo girando

Exemplo 2

• A cada quadro da animação, o objeto é transformado (rotação, nesse caso).

• O objeto também poderia ser transformado pela mudança de tamanho (escalamento), sua forma (deformação), ou sua localização (translação).

• Outros efeitos de animação são obtidos sem alterar o objeto em si, mas a forma como ele é visualizado (transformação windowto viewport) a cada quadro (por exemplo, um zoom).

John Dingliana, 2004

Alberto Raposo – PUC-Rio

Transformações• Há 2 formas de se enxergar uma transformação

– Uma Transformação de Objeto altera as coordenadas de cada ponto de acordo com alguma regra, mantendo o sistema de coordenadas inalterado.

– Uma Transformação de Coordenadas produz um sistema de coordenadas diferente, e então representa todos os pontos originais nesse novo sistema.

• Cada maneira tem suas vantagem, e são intimamente relacionadas.

John Dingliana, 2004

Page 4: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

4

Alberto Raposo – PUC-Rio

1,1

.4, 2

TRANSFORMAÇÃO DE OBJETO

(1,1)

(1,1)

TRANSFORMAÇÃO DE COORDENADAS

John Dingliana, 2004

Alberto Raposo – PUC-Rio

Classes de Transformações

• Euclidianas / Corpos Rígidos• de Similaridade• Lineares• Afins• Projetivas

Page 5: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

5

Alberto Raposo – PUC-Rio

Transformações Euclidianas

• Preservam distâncias• Preservam ângulos

TranslaçãoRotação

Corpos Rígidos / Euclidianas

Identidade

Identidade

Translação

Rotação

MIT EECS 6.837, Durand and Cutler

Alberto Raposo – PUC-Rio

Transformações de Similaridade

• Preservam ângulos

TranslaçãoRotação

Euclidianas

Similaridades

EscalamentoIsotrópico

Identidade

MIT EECS 6.837, Durand and Cutler

EscalamentoIsotrópico

Page 6: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

6

Alberto Raposo – PUC-Rio

Transformações Lineares

TranslaçãoRotação

EuclidianasLinear

Similaridades

EscalaentoIsotrópico

IdentidadeEscalamento

Shear

Reflexão

Escalamento Reflexão Shear

MIT EECS 6.837, Durand and Cutler

Alberto Raposo – PUC-Rio

Transformações Lineares• L(p + q) = L(p) + L(q)• L(ap) = a L(p)

MIT EECS 6.837, Durand and Cutler

Page 7: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

7

Alberto Raposo – PUC-Rio

Transformações Afins

• Preservam linhasparalelas Afins

TranslaçãoRotação

EuclidianasLinear

Similaridades

EscalaentoIsotrópico

IdentidadeEscalamento

Shear

Reflexão

Alberto Raposo – PUC-Rio

TransformaçõesProjetivas

• preservam linhas Projetivas

Perspectiva

Afins

TranslaçãoRotação

EuclidianasLinear

Similaridades

EscalaentoIsotrópico

IdentidadeEscalamento

Shear

Reflexão

Page 8: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

8

Alberto Raposo – PUC-Rio

PerpectivaPerspectiva é um dos fatoresque dá “aparência 3D” às cenas

Alberto Raposo – PUC-Rio

Transformações 2D

EscalamentoRotação

Translação

EscalamentoTranslação

x

y

Coordenadas do mundo

Coordenadasde modelagem

D. Brogan, Univ. of Virginia

Page 9: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

9

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadasde modelagem

Localizaçãoinicial em(0, 0) comeixos x e yalinhados

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadasde modelagem

Scale .3, .3Rotate -90

Translate 5, 3

D. Brogan, Univ. of Virginia

Page 10: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

10

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadasde modelagem

Scale .3, .3Rotate -90

Translate 5, 3

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadasde modelagem

Scale .3, .3Rotate -90

Translate 5, 3

D. Brogan, Univ. of Virginia

Page 11: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

11

Alberto Raposo – PUC-Rio

VRML: Nó Transform

Alberto Raposo – PUC-Rio

Exemplo em VRML

The Annotated VRML Reference

Page 12: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

12

Alberto Raposo – PUC-Rio

Exemplo em VRML

Alberto Raposo – PUC-Rio

Escalamento• Escalar uma coordenada significa multiplicar cada

um de seus componentes por um valor escalar• Escalamento isotrópico significa que esse valor

escalar é o mesmo para todos os componentes

× 2

D. Brogan, Univ. of Virginia

Page 13: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

13

Alberto Raposo – PUC-Rio

• Escalamento não-isotrópico: valores escalaresdiferentes por componente:

• Como representar o escalamento na forma de matrizes?

Escalamento

X × 2,Y × 0.5

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Escalamento

• Operação de escalamento:

• Na forma matricial:

⎥⎦

⎤⎢⎣

⎡=⎥

⎤⎢⎣

⎡byax

yx''

⎥⎦

⎤⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡=⎥

⎤⎢⎣

⎡yx

ba

yx

00

''

Matriz de escalamento

D. Brogan, Univ. of Virginia

Page 14: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

14

Alberto Raposo – PUC-Rio

Rotação 2D

cos ( ) cos cos sin sin θ φ θ φ θ φ+ = −( ) ( ) ( ) ( )sin ( ) sin cos cos sin θ φ θ φ θ φ+ = +( ) ( ) ( ) ( )

P

Q

R PX

PYφ

θ

[1][2]

[3][4]

[1] )( )( )()( φθφθ sinsincoscos RRxQ −=

Substituindo de [3] e [4]…

)()( θθ sincos yPxPxQ −=

Similarmente, a partir de [2]…

)()( θθ sincos xPyPyQ +=

)Rcos( Q X φθ += )Rsin( Q y φθ +=

)(cosR PX φ= )(sinR Py φ=

John Dingliana, 2004

Alberto Raposo – PUC-Rio

Rotação 2D

θ

(x, y)

(x’, y’)

x’ = x cos(θ) - y sin(θ)y’ = x sin(θ) + y cos(θ)

D. Brogan, Univ. of Virginia

Page 15: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

15

Alberto Raposo – PUC-Rio

Rotação 2D• Na forma matricial:

• Embora sin(θ) e cos(θ) sejam funções não-lineares de θ,– x’ é combinação linear de x e y– y’ é combinação linear de x e y

( ) ( )( ) ( ) ⎥

⎤⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡ −=⎥

⎤⎢⎣

⎡yx

yx

θθθθ

cossinsincos

''

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Translação 2D

⎥⎦⎤

⎢⎣⎡

++

≡⎟⎠⎞

⎜⎝⎛+⎟

⎠⎞⎜

⎝⎛=⎟

⎠⎞⎜

⎝⎛

y

x

y

xtytx

tt

yx

yx

''

y

xx

y ⎟⎟⎠

⎞⎜⎜⎝

⎛=

y

x

tt

t

M. Gattass, PUC-Rio

Page 16: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

16

Alberto Raposo – PUC-Rio

Transformações 2D Básicas• Translação:

– x’ = x + tx– y’ = y + ty

• Escalamento:– x’ = x * sx– y’ = y * sy

• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ

Podem ser combinadascom álgebra simples

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Transformações 2D Básicas• Translação:

– x’ = x + tx– y’ = y + ty

• Escalamento:– x’ = x * sx– y’ = y * sy

• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ

D. Brogan, Univ. of Virginia

Page 17: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

17

Alberto Raposo – PUC-Rio

• Translação:– x’ = x + tx– y’ = y + ty

• Escalamento:– x’ = x * sx– y’ = y * sy

• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ x’ = x*sx

y’ = y*sy

(x,y)(x’,y’)

Transformações 2D Básicas

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

x’ = (x*sx) *cosΘ - (y*sy) * sinΘy’ = (x*sx) * sinΘ + (y*sy) * cosΘ

(x’,y’)

• Translação:– x’ = x + tx– y’ = y + ty

• Escalamento:– x’ = x * sx– y’ = y * sy

• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ

D. Brogan, Univ. of Virginia

Transformações 2D Básicas

Page 18: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

18

Alberto Raposo – PUC-Rio

• Translação:– x’ = x + tx– y’ = y + ty

• Escalamento:– x’ = x * sx– y’ = y * sy

• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ x’ = ((x*sx)*cosΘ - (y*sy)*sinΘ) + tx

y’ = ((x*sx)*sinΘ + (y*sy)*cosΘ) + ty

(x’,y’)

D. Brogan, Univ. of Virginia

Transformações 2D Básicas

Alberto Raposo – PUC-Rio

Representação Matricial

• Representar transformação 2D por umamatriz

• Multiplicar matriz por vetor-coluna⇔ aplicar transformação a um ponto

⎥⎦⎤

⎢⎣⎡⎥⎦⎤

⎢⎣⎡=⎥⎦

⎤⎢⎣⎡

yx

dcba

yx''

⎥⎦⎤

⎢⎣⎡

dcba

dycxybyaxx

+=+=

''

D. Brogan, Univ. of Virginia

Page 19: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

19

Alberto Raposo – PUC-Rio

Representação Matricial

• Transformações são combinadas pormultiplicação de matrizes

⎥⎦⎤

⎢⎣⎡⎥⎦⎤

⎢⎣⎡⎥⎦⎤

⎢⎣⎡⎥⎦⎤

⎢⎣⎡=⎥⎦

⎤⎢⎣⎡

yx

lkji

hgfe

dcba

yx

''

Matrizes são uma forma conveniente e eficientede representar uma seqüência de transformações

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Produto de Matrizes

∑=

=q

kkjikij bac

1

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

==

qmqq

m

m

nqnn

q

q

bbb

bbbbbb

aaa

aaaaaa

L

MOMM

L

L

L

MOMM

L

L

21

22221

11211

21

22221

11211

ABC

⎥⎥⎥⎥

⎢⎢⎢⎢

=

100

010001

OM

L

Ineutro:M. Gattass, PUC-Rio

Page 20: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

20

Alberto Raposo – PUC-Rio

Matrizes 2x2• Que transformações planares podem ser

representadas com uma matriz 2x2?Identidade 2D?

yyxx

==''

⎥⎦⎤

⎢⎣⎡⎥⎦⎤

⎢⎣⎡=⎥⎦

⎤⎢⎣⎡

yx

yx

1001

''

Escalemento 2D em torno de (0,0)?

ysy

xsx

y

x

*'

*'

=

=⎥⎦

⎤⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡=⎥

⎤⎢⎣

⎡yx

ss

yx

y

x

00

''

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Matrizes 2x2• Que transformações planares podem ser

representadas com uma matriz 2x2?

D. Brogan, Univ. of Virginia

Rotação 2D em torno de (0,0)?

yxyyxx

*cos*sin'*sin*cos'

Θ+Θ=Θ−Θ=

⎥⎦

⎤⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡ΘΘΘ−Θ

=⎥⎦

⎤⎢⎣

⎡yx

yx

cossinsincos

''

Page 21: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

21

Alberto Raposo – PUC-Rio

Matrizes 2x2• Que transformações planares podem ser

representadas com uma matriz 2x2?

D. Brogan, Univ. of Virginia

Espelhamento 2D em torno de Y?

yyxx

=−=

''

⎥⎦⎤

⎢⎣⎡⎥⎦⎤

⎢⎣⎡−=⎥⎦

⎤⎢⎣⎡

yx

yx

1001

''

Espelhamento 2D em torno de (0,0)?

yyxx

−=−=

''

⎥⎦⎤

⎢⎣⎡⎥⎦⎤

⎢⎣⎡

−−=⎥⎦

⎤⎢⎣⎡

yx

yx

1001

''

Alberto Raposo – PUC-Rio

Matrizes 2x2• Que transformações planares podem ser

representadas com uma matriz 2x2?

D. Brogan, Univ. of Virginia

Translação 2D?

y

x

tyytxx

+=+=

''

NÃO!

Page 22: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

22

Alberto Raposo – PUC-Rio

Coordenadas Homogêneas

• Como representar uma translação comomatriz 3x3?

y

x

tyytxx

+=+=

''

Alberto Raposo – PUC-Rio

Coordenadas Homogêneas

•Coordenadas homogêneas– representam

coordenadas em 2 dimensões com vetor 3 ⎥

⎥⎦

⎢⎢⎣

⎡⎯⎯⎯⎯⎯ →⎯⎥⎦

⎤⎢⎣⎡

1homogêneas coord. y

xyx

• Coordenadas Homogêneas parecem poucointuitivas, mas elas simplificam muito as operações gráficas

D. Brogan, Univ. of Virginia

Page 23: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

23

Alberto Raposo – PUC-Rio

Coordenadas Homogêneas

• Como representar uma translação comomatriz 3x3?

y

x

tyytxx

+=+=

''

Resp: Usando a terceiracoluna da matriz

⎥⎥⎥

⎢⎢⎢

⎡=

1001001

y

x

tt

Translação

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Translação

•Exemplo

⎥⎥

⎢⎢

⎡++

=⎥⎥⎦

⎢⎢⎣

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎦

⎢⎢⎣

111001001

1''

y

x

y

x

tytx

yx

tt

yx

tx = 2ty = 1

•Coordenadas Homogêneas

D. Brogan, Univ. of Virginia

Page 24: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

24

Alberto Raposo – PUC-Rio

Coordenadas Homogêneas

• Coloca uma 3a coordenada para cada ponto 3D– (x, y, w) representa um ponto em (x/w, y/w)– (x, y, 0) representa um ponto no infinito– (0, 0, 0) não é permitido

Sistema conveniente pararepresentar muitastransformações úteis emCG

1 2

1

2 (2,1,1) or (4,2,2) or (6,3,3)

x

y

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Transformações 2D Básicas

• Representação em matrizes 3x3

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡ΘΘΘ−Θ

=⎥⎥⎥

⎢⎢⎢

11000cossin0sincos

1''

yx

yx

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

11001001

1''

yx

tt

yx

y

x

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

11000101

1''

yx

shsh

yx

y

x

Translação

Rotação Cisalhamento (Shear)

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

11000000

1''

yx

ss

yx

y

x

Escalamento

Page 25: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

25

Alberto Raposo – PUC-Rio

Cisalhamento (Shear)

yxshyyshxx

y

x

+=+=

*'*'

x

y

x

y

γ

⎟⎟⎟

⎜⎜⎜

⎥⎥⎦

⎢⎢⎣

⎡=

⎟⎟⎟

⎜⎜⎜

⎛ +=

⎟⎟⎟

⎜⎜⎜

11000100tan1

1

tan

1''

yx

yyx

yx γγ

M. Gattass, PUC-Rio

Alberto Raposo – PUC-Rio

Concatenação de Transformações

x

y

x

y

x

y

x

y

x

y

x

yT1

R1

E

R2

T2

P’= T2 R2 E R1 T1 PP’= T2 R2 E R1 T1 P M. Gattass, PUC-Rio

Page 26: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

26

Alberto Raposo – PUC-Rio

Composição de Matrizes

• Transformações podem ser combinas pelamultiplicação de matrizes

⎥⎥⎥

⎢⎢⎢

⎟⎟⎟

⎜⎜⎜

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡ΘΘΘ−Θ

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

wyx

sysx

tytx

wyx

1000000

1000cossin0sincos

100

1001

'''

p’ = T(tx,ty) R(Θ) S(sx,sy) p

D. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Composição de Matrizes

• Atenção: ordem das transformações fazdiferença– Multiplicação de matrizes não é comutativa

p’ = T * R * S * p

“Global” “Local”

Page 27: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

27

Alberto Raposo – PUC-Rio

Ordem das Transformações

x

y⎟⎟⎠

⎞⎜⎜⎝

⎛=

yx

p

R x

y ⎟⎟⎠

⎞⎜⎜⎝

⎛=

2

22 y

xp

T

x

y⎟⎟⎠

⎞⎜⎜⎝

⎛=

1

11 y

xp

R x

y⎟⎟⎠

⎞⎜⎜⎝

⎛=

yx

1p

x

y ⎟⎟⎠

⎞⎜⎜⎝

⎛=

2

22 y

xp

T

(a)

(b)M. Gattass, PUC-Rio

Alberto Raposo – PUC-Rio

Ordem das Transformações

• Ex: rotacionar segmento em 45 graus emtorno da extremidade a

a a

Resultado esperado

D. Brogan, Univ. of Virginia

Page 28: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

28

Alberto Raposo – PUC-Rio

Ordem das Transformações

• Erro: aplicar a rotação de 45o, R(45), afeta as duasextremidades– Pode-se tentar fazer a rotação e depois retornar o ponto

a à sua posição original, mas quanto ele precisaria ser transladado?

Errado!R(45)

aa

CorretoT(-3) R(45) T(3)

a

D. Brogan, Univ. of Virginia

Como trazer o ponto a devolta à posição original??

?

Alberto Raposo – PUC-Rio

Ordem das Transformações

• Correto: isolar ponto a dos efeitosda rotação

1. Transladar a linha para colocar a na origem: T (-3)

2. Rotacionar linha em 45o: R(45)

3. Transladar a de volta: T(3)

a

a

a

a

D. Brogan, Univ. of Virginia

Page 29: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

29

Alberto Raposo – PUC-Rio

Composição de Matrizes

⎥⎥

⎢⎢

⎡=

⎥⎥

⎢⎢

⎥⎥⎦

⎢⎢⎣

⎡ −

⎥⎥⎦

⎢⎢⎣

⎡ −

⎥⎥⎦

⎢⎢⎣

1''

1

100010301

1000)45cos()45sin(0)45sin()45cos(

100010301

y

x

y

xaa

aa

T(3) R(45) T(-3)

A multiplicação começa da última para a primeira transformação

Alberto Raposo – PUC-Rio

Composição de Matrizes•Depois de ordenar as matrizes corretamente:– Multiplicá-las– Guardar resultado em uma só matriz– Usar essa matriz para realizar a transformação

composta em cada um dos pontos que definem o objeto transformado (vértices, por exemplo)Todos os vértices podem ser transformados

com uma simples multiplicação de vetor pormatriz.

Page 30: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

30

Alberto Raposo – PUC-Rio

Exercício 2D

• Considere o triângulo com os seguintes vértices em coordenadashomogêneas– Rotacione o triângulo

de 90o (sentido anti-horário) em relação aoponto P = (6,5)

y

x

C

BA

P

Alberto Raposo – PUC-Rio

Etapas da Solução

1. Definir matriz para transladar o triângulo de modo que o centro de rotação se mova para a origem do sistema de coordenadas

2. Definir matriz para rotacionar o triângulo3. Definir matriz para transladar o triângulo

de volta4. Gerar matriz combinada da transformação5. Transformar os vértices do triângulo

Page 31: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

31

Alberto Raposo – PUC-Rio

Etapas da Solução

1. Definir matriz para transladar o triângulo de modo que o centro de rotação se mova para a origem do sistema de coordenadas

– Centro de rotação: P = (6,5)– Translação de -6 unidades em x e -5 unidades

em y

Alberto Raposo – PUC-Rio

Etapas da Solução

2. Definir matriz para rotacionar o triângulo• O ângulo de rotação é medido no sentido anti-

horário: R(+90o)• cos(90o) = 0 e sin(90o) = 1

Page 32: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

32

Alberto Raposo – PUC-Rio

Etapas da Solução

3. Definir matriz para transladar o triângulo de volta

• Translação de 6 unidades em x e 5 unidades em y

Alberto Raposo – PUC-Rio

Etapas da Solução

4. Gerar matriz combinada da transformação

=

Page 33: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

33

Alberto Raposo – PUC-Rio

Etapas da Solução

5. Transformar os vértices do triângulo

y

x

C

BA

P

B’

= A’

C’

Alberto Raposo – PUC-Rio

Transformações em 3D

• Mesma idéia que em 2D:– Coordenadas homogêneas: (x,y,z,w) – Matrizes de trasnformação 4x4

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

=⎥⎥⎥

⎢⎢⎢

wzyx

ponmlkjihgfedcba

wzyx

''''

Page 34: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

34

Alberto Raposo – PUC-Rio

Transformações 3D Básicas

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

wzyx

wzyx

1000010000100001

'''

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

wzyx

ttt

wzyx

z

y

x

1000100010001

'''

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

wzyx

ss

s

wzyx

z

y

x

1000000000000

'''

IdentidadeEscalamento

TranslaçãoD. Brogan, Univ. of Virginia

Alberto Raposo – PUC-Rio

Transformações 3D Básicas

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡−=

⎥⎥⎥

⎢⎢⎢

wzyx

wzyx

1000010000100001

'''

Espelhamento em torno doplano YZ

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡−=

⎥⎥⎥

⎢⎢⎢

wzyx

wzyx

1000010000100001

'''

Espelhamento em torno doplano XZ

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

−=⎥⎥⎥

⎢⎢⎢

wzyx

wzyx

1000010000100001

'''

Espelhamento em torno doplano XY

Page 35: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

35

Alberto Raposo – PUC-Rio

Transformações 3D Básicas

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡ΘΘΘ−Θ

=⎥⎥⎥

⎢⎢⎢

wzyx

wzyx

1000010000cossin00sincos

'''

Rotação em torno de Z:

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

ΘΘ−

ΘΘ

=

⎥⎥⎥⎥

⎢⎢⎢⎢

wzyx

wzyx

10000cos0sin00100sin0cos

'''

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

ΘΘΘ−Θ=

⎥⎥⎥

⎢⎢⎢

wzyx

wzyx

10000cossin00sincos00001

'''

Rotação em torno de Y:

Rotação em torno de X:

Alberto Raposo – PUC-Rio

Rotações Reversas

• Como desfazer uma rotação R(θ)?– Aplicar o inverso da rotação: R(-θ)

•Construindo R(-θ) :– cos(-θ) = cos(θ)– sin (-θ) = - sin (θ)

• Assim: R(-θ) = RT(θ)

⎥⎥⎥

⎢⎢⎢

ΘΘ

Θ−Θ=

⎥⎥⎥

⎢⎢⎢

ΘΘ−

ΘΘ

10000cos0sin00100sin0cos

10000cos0sin00100sin0cos T

Page 36: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

36

Alberto Raposo – PUC-Rio

Exercício 3D

• Encontre as respectivas matrizes de transformação para os seguintes casos

a) Translação que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

b) Escalamento que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

• Qual o ângulo dessa rotação?

Alberto Raposo – PUC-Rio

Solução

a) Translação que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

Matriz de translação ⇒

Page 37: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

37

Alberto Raposo – PUC-Rio

Solução

b) Escalamento que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

Matriz de escalamento ⇒

Alberto Raposo – PUC-Rio

Solução

c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

Para rotação em torno de z:

(2) – (1): ⇒

Page 38: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

38

Alberto Raposo – PUC-Rio

Solução

c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

Matriz de rotação ⇒

Substituindo em (1) ou (2):

Alberto Raposo – PUC-Rio

Solução

c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)

• Qual o ângulo dessa rotação?

⇒ ⇒

Page 39: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

39

Alberto Raposo – PUC-Rio

Ângulos de Euler

Fundamentos da Comp. GráficaJonas Gomes, Luiz Velho

Alberto Raposo – PUC-Rio

Ângulos de Euler

⎥⎥⎥⎥

⎢⎢⎢⎢

−++−

1000000

yxzxzyxzxzyx

yxzxzyxzxzyx

yzyzy

cccssscsscsccsccssssccssssccc

θxx

y

z

θy

x

y

zθz

x

y

z

M. Gattass, PUC-Rio

Notação: cx = cos(θx); sx = sin(θx) e assim por diante

Page 40: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

40

Alberto Raposo – PUC-Rio

ox 90=θo

z 90−=θ

ox 90=θ o

z 90−=θ

Alberto Raposo – PUC-Rio

Demo: Ângulos de Euler

http://prt.fernuni-hagen.de/lehre/KURSE/PRT001/course_main/node10.html

Page 41: INF 1366 – Computação Gráfica Interativawebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/04_Transforma... · • Que transformações planares podem ser representadas com

41

Alberto Raposo – PUC-Rio

Bibliografia Adicional• Peter Shirley, Fundamentals of Computer Graphics,

A K Peters, Ltd., Natick, MA, USA, 2002.• Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F.,

Phlips, L. R., Introduction to ComputerGraphics, Addison-Wesley, 1995.

• Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Computer Graphics: Principles and Practices, (Systems Programming), 2nd edition in C, Addison-Wesley, 1995.

• The Annotated VRML 97 Reference: http://accad.osu.edu/~pgerstma/class/vnv/resources/info/AnnotatedVrmlRef/Book.html