Você está na página 1de 19

Transformaes Geomtricas 2D

Sistemas Grficos/
Computao Grfica e Interfaces

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 1


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Transformaes Geomtricas 2D

As transformaes geomtricas so essenciais na computao grfica para


posicionar, mudar a orientao e escalar objectos na cena criada. O
movimento tambm implementado por variar os parmetros de
transformao ao longo do tempo.

Transformaes:
Translao
Escalamento
Rotao

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 2


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Translao

xT=x+Tx

yT=y+Ty

Vrtices: (4,5) e (7,5) O par de translao denomina-se por


Tx = 3 Ty = -4 vector de translao. A cada vrtice
aplicado um deslocamento T:
xT x Tx
y = y + T
T y
x
Na forma de T
x 1 0 T
x
produto matricial: =
y 0 1 T . y
T y
1
FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 3
DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Escalamento
100 xT=x * Sx

yT=y * Sy Em relao origem.

40 80 120
20 40 60

200

Sx = 2
Sy = 2 Sx = 2
Sy = -1.5
150

40 80 120

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 4


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Escalamento
Na forma matricial:

xT s x 0 x
y = 0 s y y
.
T

Factor de escala:
>1 aumenta o objecto
<1 reduz o objecto
sx=sy factor de escala uniforme no distorce o objecto

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 5


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Rotao
100 xR,yR x=R.cos(a)
R b
x,y y=R.sen(a) Em torno da origem.
a

xR=R.cos(a+b) = R.cos(a).cos(b) R.sen(a).sen(b) = x.cos(b) y.sen(b)

yR=R.sen(a+b) = R.sen(b).cos(a) + R.sen(a).cos(b) = x.sen(b) + y.cos(b)

Obtm-se a nova posio em funo da anterior e do ngulo relativo de rotao.

Rotao de -45

Vrtices: (20,0), (60,0), (40,100) Vrtices: (14.14, -14.14), (42.43, -42.43),


(98.99, 42.43)

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 6


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Rotao
Na forma matricial: Nota: b positivo no sentido
contrrio ao movimento
xR cos(b) sen(b) x
y = sen(b) cos(b) . y
dos ponteiros do relgio.
R

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 7


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Composio de Transformaes
T2
T1 T3

Tc

A aplicao de uma sequncia de operaes


=
1 nica transformao

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 8


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Composio de Transformaes
Situao inicial Aps rotao Aps translao -80 0,0
100
(20,0) (0,-20) (-80,-20)
(60,0) (0,-60) (-80,-60)
(40,100) (100,-40) (20,-40)
20 60
a = - 90 Tx=-80, Ty=0

Trocando as transformaes:

Situao inicial Aps translao Aps rotao


100
100
(20,0) (-60,0) (0,60)

(60,0) (-20,0) (0,20)

(40,100) (-40,100) (100,40) 20 60


20 60
Tx=-80, Ty=0 a = - 90

Concluso: a aplicao das transformaes no comutativa

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 9


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Coordenadas homogneas
A sequncia anterior, rotao seguida de translao, aplicada a cada vrtice pode ser escrita como:

1 xR1 cos(a) sen(a) x


y = sen(a ) cos(a ) . y
R1 Se as matrizes que representam
as transformaes fossem da
mesma dimenso poder-se-am
xR1 combinar.
2 xR 2 1 0 Tx
y = 0 1 T . y R1
R2 y
1

No entanto, as transformaes anteriores podem tambm ser escritas como (forma homognea):

xR1 cos(a) sen(a ) 0 x x xR 2 1 0 Tx xR1 xR1


y = sen(a ) cos(a) 0. y =R (a). y y = 0 1 T . y =T (T , T ). y
R1 R2 y R1 x y R1

1 0 0 1 1 1 1 0 0 1 1 1

Podemos ento xR 2 x O produto de matrizes :


escrever: y =T (T , T ).R (a). y
R2 x y Associativo
1 1 Em geral No comutativo
T (Tx , Ty ).R (a ) R (a ).T (Tx , Ty )

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 10


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Coordenadas homogneas - resumo
Matriz de Rotao Matriz de Translao

cos(a ) sen(a ) 0 1 0 Tx
sen(a ) cos(a ) 0 =R(a ) 0 1 T =T (T , T )
y x y

0 0 1 0 0 1

Matriz de Escalamento
Em coordenadas homogneas um objecto de
sx 0 0
0 n dimenses representado num espao a
sy 0 =S ( s x , s y ) n+1 dimenses.
0 0 1

(x,y) (x.h, y.h, h)


2D 3D
Consideramos h=1

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 11


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Transformaes - Exemplos
P
P= T(dx1,dy1)*P
T(dx2,dy2)
T(dx1,dy1)
P P= T(dx2,dy2)*P

P
T(?,?) P= T(dx2,dy2)*T(dx1,dy1)*P

1 0 d x 2 1 0 d x1 1 0 d x 2 + d x1
0 1 d .0 1 d = 0 1 d + d
y2 y1 y2 y1

0 0 1 0 0 1 0 0 1

T(dx2,dy2)*T(dx1,dy1)=T(dx1+dx2, dy1+dy2)

Verificar que:
S(sx2,sy2)*S(sx1,sy1)=S(sx1*sx2, sy1*sy2)

R(a2)*R(a1) = R(a2+a1)
FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 12
DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Transformaes relativas a um
ponto arbitrrio (pivot)
Rotao
Rotao de -45
A rotao desloca os objectos em
torno da origem.

Soluo:
Fazer a translao do objecto de modo que o ponto pivot coincida com a origem
Rodar o objecto em torno da origem
Fazer a translao o objecto de modo que o ponto pivot volte posio inicial
(inversa da primeira)

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 13


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Transformaes relativas a um
ponto arbitrrio (pivot)
Matriz de transformao
1 0 d x cos(a ) sen(a ) 0 1 0 d x cos(a ) sen(a ) d x (1 cos(a )) + d y sen(a ))
0 1 d . sen(a ) cos(a ) 0.0 1 d = sen(a ) cos(a ) d (1 cos(a )) d sen(a )) =
y y y x
0 0 1 0 0 1 0 0 1 0 0 1
T (d x , d y ).R (a ).T (d x , d y )

Escalamento
Fazer a translao do objecto de modo que o ponto pivot coincida com a origem
Escalar o objecto
Fazer a translao o objecto de modo que o ponto pivot volte posio inicial
(inversa da primeira)

1 0 d x s x 0 0 1 0 d x s x 0 d x (1 s x )
0 1 d . 0 sy 0.0 1 d y = 0 sy d y (1 s y ) = T (d x , d y ).S ( s x , s y ).T ( d x ,d y )
y

0 0 1 0 0 1 0 0 1 0 0 1

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 14


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Exerccio
Determinar a matriz de transformao para:

T(-x1,-y1) S(0.5,0.5) R(90) T(x2,y2)

Se P1=(1,2) e P2=(3,3) determine a matriz de transformao equivalente.

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 15


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Outras transformaes
Reflexo
Em relao ao eixo x corresponde a uma rotao de 180 no espao
3D em torno do eixo de reflexo, o que se traduz num escalamento
S(1,-1):
y

1 0 0
0 1 0

x 0 0 1

Em relao ao eixo y: 1 0 0
0 1 0

0 0 1
x

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 16


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Outras transformaes
Reflexo em relao linha y=x
y

0 1 0
R(45).S (1,1).R (45) = 1 0 0
0 0 1

y
Reflexo em relao linha y=-x

0 1 0
R( 45).S (1,1).R (45) = 1 0 0
0 0 1

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 17


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Transformaes Inversas
Se uma transformao, possivelmente composta, dada por uma matriz M de dimenses
3x3, ento a transformao inversa que coloca o objecto na sua posio inicial (ou seja
sem transformao) dada por M-1.

Uma vez que M representa uma ou mais transformaes, a matriz inversa dever existir.

M.M-1 = I

Para algumas transformaes fcil encontrar a matriz inversa:


1 0 t x
Translao: T 1 =0 1 t y
0 0 1

Escalamento: 1 / s x 0 0
S 1 = 0 1 / s y 0
0 0 1

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 18


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004
Exerccio

(Pergunta do teste de 23 Maio 2002)

FACULDADE DE ENGENHARIA COMPUTAO GRFICA E INTERFACES/ 19


DA UNIVERSIDADE DO PORTO SISTEMAS GRFICOS JGB/AAS 2004

Você também pode gostar