84
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 INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo [email protected] abraposo/INF1366

Embed Size (px)

Citation preview

Page 1: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 2: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@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 3: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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/ou translaçã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

Page 4: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 5: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 window to viewport) a cada quadro (por exemplo, um zoom).

John Dingliana, 2004

Page 6: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 7: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

1,1

.4, 2

TRANSFORMAÇÃO DE OBJETO

(1,1)

(1,1)

TRANSFORMAÇÃO DE COORDENADAS

John Dingliana, 2004

Page 8: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Classes de Transformações

• Euclidianas / Corpos Rígidos

• de Similaridade

• Lineares

• Afins

• Projetivas

Page 9: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações Euclidianas

• Preservam distâncias

• Preservam ângulos

Translação

Rotação

Corpos Rígidos / Euclidianas

Identidade

Identidade

Translação

Rotação

MIT EECS 6.837, Durand and Cutler

Page 10: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 11: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 12: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 13: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações Afins

• Preservam linhas paralelas Afins

TranslaçãoRotação

EuclidianasLinear

Similaridades

EscalaentoIsotrópico

IdentidadeEscalamento

Shear

Reflexão

Page 14: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

TransformaçõesProjetivas

• preservam linhas Projetivas

Perspectiva

Afins

TranslaçãoRotação

EuclidianasLinear

Similaridades

EscalaentoIsotrópico

IdentidadeEscalamento

Shear

Reflexão

Page 15: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Perpectiva

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

Page 16: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 2D

EscalamentoRotação

Translação

EscalamentoTranslação

x

y

Coordenadas do mundo

Coordenadas de modelagem

D. Brogan, Univ. of Virginia

Page 17: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadas de modelagem

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

D. Brogan, Univ. of Virginia

Page 18: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadas de modelagem

Scale .3, .3Rotate -90

Translate 5, 3

D. Brogan, Univ. of Virginia

Page 19: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadas de modelagem

Scale .3, .3Rotate -90

Translate 5, 3

D. Brogan, Univ. of Virginia

Page 20: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 2D

x

y

Coordenadas de modelagem

Scale .3, .3Rotate -90

Translate 5, 3

D. Brogan, Univ. of Virginia

Page 21: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

VRML: Nó Transform

Page 22: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Exemplo em VRML

The Annotated VRML Reference

Page 23: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Exemplo em VRML

Page 24: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

X3D – Nó Transform

Page 25: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Exemplo em X3D

Page 26: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

A ordem das transformações faz diferença!

Page 27: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 28: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

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

• Como representar o escalamento na forma de matrizes?

Escalamento

X 2,Y 0.5

D. Brogan, Univ. of Virginia

Page 29: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Escalamento

• Operação de escalamento:

• Na forma matricial:

by

ax

y

x

'

'

y

x

b

a

y

x

0

0

'

'

Matriz de escalamento

D. Brogan, Univ. of Virginia

Page 30: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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( QX )Rsin( Qy

)(cosR PX )(sinR Py

John Dingliana, 2004

Page 31: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 32: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

y

x

y

x

cossin

sincos

'

'

D. Brogan, Univ. of Virginia

Page 33: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Translação 2D

y

x

y

x

tytx

tt

yx

yx

''

y

xx

y

y

x

t

tt

M. Gattass, PUC-Rio

Page 34: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 35: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 36: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 37: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

x’ = (x*sx) *cos - (y*sy) * siny’ = (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 38: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 39: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Representação Matricial

• Representar transformação 2D por uma matriz

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

yx

dcba

yx''

dcba

dycxy

byaxx

'

'

D. Brogan, Univ. of Virginia

Page 40: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Representação Matricial

• Transformações são combinadas por multiplicação de matrizes

yx

lkji

hgfe

dcba

yx

''

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

D. Brogan, Univ. of Virginia

Page 41: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Produto de Matrizes

q

kkjikij bac

1

qmqq

m

m

nqnn

q

q

bbb

bbb

bbb

aaa

aaa

aaa

21

22221

11211

21

22221

11211

ABC

100

010

001

Ineutro:M. Gattass, PUC-Rio

Page 42: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

*'

*'

y

x

s

s

y

x

y

x

0

0

'

'

D. Brogan, Univ. of Virginia

Page 43: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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'

y

x

y

x

cossin

sincos

'

'

Page 44: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

''

Page 45: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

tyy

txx

'

'NÃO!

Page 46: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Coordenadas Homogêneas

• Como representar uma translação como matriz 3x3?

y

x

tyy

txx

'

'

Page 47: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Coordenadas Homogêneas

•Coordenadas homogêneas– representam

coordenadas em 2 dimensões com vetor 3

1

homogêneas coord. yx

yx

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

D. Brogan, Univ. of Virginia

Page 48: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Coordenadas Homogêneas

• Como representar uma translação como matriz 3x3?

y

x

tyy

txx

'

'

Resp: Usando a terceiracoluna da matriz

1001001

y

x

tt

Translação

D. Brogan, Univ. of Virginia

Page 49: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 50: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 para representar muitas transformações úteis em CG

1 2

1

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

x

y

D. Brogan, Univ. of Virginia

Page 51: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 2D Básicas

• Representação em matrizes 3x3

1100

0cossin

0sincos

1

'

'

y

x

y

x

1100

10

01

1

'

'

y

x

t

t

y

x

y

x

1100

01

01

1

'

'

y

x

sh

sh

y

x

y

x

Translação

RotaçãoCisalhamento (Shear)

1100

00

00

1

'

'

y

x

s

s

y

x

y

x

Escalamento

Page 52: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Cisalhamento (Shear)

yxshy

yshxx

y

x

*'

*'

x

y

x

y

11000100tan1

1

tan

1

''

yx

yyx

yx

M. Gattass, PUC-Rio

Page 53: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 PM. Gattass, PUC-Rio

Page 54: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Composição de Matrizes

• Transformações podem ser combinadas pela multiplicação de matrizes

w

y

x

sy

sx

ty

tx

w

y

x

100

00

00

100

0cossin

0sincos

100

10

01

'

'

'

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

D. Brogan, Univ. of Virginia

Page 55: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Composição de Matrizes

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

p’ = T * R * S * p

“Global” “Local”

Page 56: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Ordem das Transformações

x

y

y

xp

R x

y

2

22 y

xp

T

x

y

1

11 y

xp

R x

y

y

x1p

x

y

2

22 y

xp

T

(a)

(b)M. Gattass, PUC-Rio

Page 57: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Ordem das Transformações

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

a a

Resultado esperado

D. Brogan, Univ. of Virginia

Page 58: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Ordem das Transformações

• Erro: aplicar a rotação de 45o, R(45), afeta as duas extremidades– 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??

?

Page 59: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 60: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Composição de Matrizes

1''

1

100010301

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

100010301

y

x

y

x

aa

aa

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

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

Page 61: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 por matriz.

Page 62: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 63: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 64: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 65: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 66: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 67: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Etapas da Solução

4. Gerar matriz combinada da transformação

=

Page 68: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Etapas da Solução

5. Transformar os vértices do triângulo

y

x

C

BA

P

B’

= A’

C’

Page 69: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 70: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 3D Básicas

wzyx

wzyx

1000010000100001

'''

w

z

y

x

t

t

t

w

z

y

x

z

y

x

1000

100

010

001

'

'

'

w

z

y

x

s

s

s

w

z

y

x

z

y

x

1000

000

000

000

'

'

'

IdentidadeEscalamento

TranslaçãoD. Brogan, Univ. of Virginia

Page 71: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 72: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Transformações 3D Básicas

wzyx

wzyx

1000010000cossin00sincos

'''

Rotação em torno de Z:

w

z

y

x

w

z

y

x

1000

0cos0sin

0010

0sin0cos

'

'

'

wzyx

wzyx

10000cossin00sincos00001

'''

Rotação em torno de Y:

Rotação em torno de X:

Page 73: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Rotações Reversas

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

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

– sin (-) = - sin ()

• Assim: R(-) = RT()

10000cos0sin00100sin0cos

10000cos0sin00100sin0cos

T

Page 74: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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?

Page 75: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 76: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 77: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 78: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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

Page 79: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 80: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Ângulos de Euler

Fundamentos da Comp. GráficaJonas Gomes, Luiz Velho

Page 81: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Ângulos de Euler

1000

0

0

0

yxzxzyxzxzyx

yxzxzyxzxzyx

yzyzy

cccssscsscsc

csccssssccss

ssccc

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 82: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

ox 90o

z 90

ox 90 o

z 90

Page 83: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

Alberto Raposo – PUC-Rio

Demo: Ângulos de Euler

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

Page 84: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo abraposo@tecgraf.puc-rio.br abraposo/INF1366

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 Computer Graphics,  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.

• Brutzman, D. e Daly, L., Extensible 3D Graphics for Web Authors, Morgan Kaufmann, 2007.

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