Você está na página 1de 9

Transformaes Geomtricas Transformaes Geomtricas 2D

M.C.F. de Oliveira Rosane Minghim 2007


Aplicadas aos modelos grficos para alterar a geometria dos objetos, sem alterar a topologia Porque so necessrias:

Para posicionar os objetos em relao ao sistema de coordenadas global (world coordinate system) alterar tamanho, orientao, posio Para mover os objetos (gerando uma animao) Para transformar descries de objetos entre diferentes sistemas de coordenadas Transformaes fundamentais: translao, rotao e escala

1) Transformaes Fundamentais

Sistemas de Coordenadas
Transformaes entre sistemas de coordenadas

Translao:
P(x, y)
trans

P(x, y)

Aplicaes grficas freqentemente requerem a transformao de descries de objetos de um sistema de coordenadas para outro Objeto pode ser descrito em um sistema de objetos no-cartesiano, e precisa ser convertido para um sistema cartesiano Em aplicaes de animao e modelagem, objetos individuais definidos em seu prprio sistema de coordenadas (SRO), coordenadas locais (SRO) so depois transformadas para posicionar os objetos no SRU

x = x + dx, P= x , y

y = y + dy dx dy

(1) (2)

P = x , T = y P = P + T

(3)

Escala (em relao origem):


P(x, y)
esc

Rotao () (em relao origem):


P(x, y)
(4)

P(x, y)

x = sx . x,
x y = sx 0

y = sy . y
0 sy x y

x = x . cos y . sin , y = x . sin + y . cos x y cos -sin = sin cos P = R . P x y

(6)

P = S . P
sx, sy > 0 sx, sy > 1.0 sx, sy < 1.0 sx = sy sx sy

(5)

(7)

Obs.: ngulos so definidos como positivos quando a rotao feita no sentido anti-horrio, e negativo caso contrrio.

Derivando as equaes de rotao (fig.): P1 = (4, 5) P2 = (7, 5) P1 = (7, 1) P2 = (10, 1)

x = r . cos ,

y = r . sin

(8)

Translao de uma casa (3, -4)

x = r . cos( + ) = r . cos . cos r . sin . sin (9) y = r . sin( + ) = r . cos . sin + r . sin . cos
Pode-se obter (6) substituindo (8) em (9)

P1 = (4, 5) P2 = (7, 5)

P1 = (2, 5/4) P2 = (7/2, 5/4)

Escalonamento (no uniforme) de uma casa (, )

Observao
P1 = (2.1, 4.9) P2 = (4.9, 7.8)

P1 = (5, 2) P2 = (9, 2)

Rotao de uma casa (45)

Aplicar qualquer transformao a um objeto equivalente aplicar a transformao inversa ao seu sistema de coordenadas!! A transformao inversa descrita pela inversa da matriz que define a transformao original Exerccio: verifique com os exemplos da apostila!

2) Coordenadas Homogneas e Matrizes de Transformao


Para a translao, rotao e escala, as matrizes de transformao so, respectivamente: P = T + P (3) P = R . P (7) . P = S P (5) Para poder combinar facilmente seqncias de transformaes, interessante expressar as 3 como multiplicaes matriz-ponto. Isso possvel representando os pontos em Coordenadas Homogneas. Um ponto (no espao 2D) representado em coordenadas homogneas descrito por trs coordenadas:

2) Coordenadas Homogneas e Matrizes de Transformao

A transformao do sistema homogneo para o sistema cartesiano se d pela seguinte relao: (x,y) = (x/W,y/W)

P=

x y

P = x y W

2) Coordenadas Homogneas e Matrizes de Transformao Dizemos que dois conjuntos de coordenadas homogneas, [x y W] e [x y W] representam o mesmo ponto se e somente se um mltiplo do outro
(x, y, W) (x, y, W) x = tx y = ty W= tW

2) Coordenadas Homogneas e Matrizes de Transformao


Pontos onde W = 0 esto, por definio, fora do espao vetorial

(0, 0, 0) no permitido W = 0 no permitido Se W 0 (x/w, y/w, 1) x/W, y/W coordenadas cartesianas do ponto homogneo
Outras vantagens do espao homogneo: evita o uso de casas decimais e vrgulas, bem como problemas ocasionados pela representao de nmeros muito grandes

Assim, (2,3,4,6) e (4,6,8,12) so diferentes representaes (no espao homogneo) para o mesmo ponto (no espao cartesiano)

(1, 2, 1,1000), (1, 2, 1, 1/1000000)

Quando W = 1, a transformao entre os espaos direta

(x,y,1) (x,y)

Translao (Coordenadas Homogneas)


Fig. Espao de Coordenadas Homogneas XYW, com plano W=1 e o ponto P = (x, y, W) projetado sobre o plano W = 1.
x y 1 = 1 0 0 0 1 0 dx dy 1 . x y 1

(10)

P = T(dx, dy) . P (11) O que acontece se um ponto P transladado para P e a seguir para P?
P = T(dx1, dy1) . P P = T(dx2, dy2) . P P = T(dx2, dy2) . (T(dx1, dy1) . P) = (T(dx2, dy2) . T(dx1, dy1)) . P (13) (14)

Obs.: Se tomarmos todas as triplas que representam o mesmo ponto, isto , todas as triplas da forma (tx, ty, tW), com t 0, obtemos uma linha no espao homogneo 3D. - Se homogeneizamos o ponto (dividimos por W), obtemos o ponto na forma (x, y, 1). - Os pontos homogeneizados definem um plano dado pela equao W = 1 no espao homogneo (x, y, W).

e
T(dx2, dy2) . T(dx1, dy1) = Transformao de Composio 1 0 0 1 0 0 0 1 0 0 1 0 dx2 dy2 1 1 0 0 0 1 0 dx1 dy1 1 =

dx1+dx2 dy1+ dy2 1

= T(dx1+dx2, dy1+dy2) aditiva!

Escala
x y 1 = sx 0 0 sy 0 0 0 0 1 . x y 1

Rotao
(17) (18)
(19) (20) x y 1 = cos sin 0 -sin cos 0 0 0 1 x y 1

(22) (24)

P = S(sx, sy) . P Aplicando 2 escalas a um ponto P:


P = S(sx1, sy1) . P P = S(sx2, sy2) . P P = S(sx2, sy2) . (S(sx1, sy1) . P) = (S(sx2, sy2) . S(sx1, sy1)) . P

P = R() . P Como exerccio, mostre que 2 rotaes so aditivas TRANSFORMAES AFINS: Seqncia arbitrria de rotaes, translaes e escalas. Preservam paralelismo de linhas, mas no preservam comprimentos e ngulos TRANSFORMAES DE CORPO RGIDO: Matrizes de transformao da forma
Sub-matriz ortogonal

e
S(sx2, sy2) . S(sx1, sy1) = sx2 0 0 sy2 0 0 = 0 0 1 sx1 0 0 sy1 0 0 0 0 1 =

M =

sx1.sx2 0 0 0 sy1.sy2 0 0 0 1

= S(sx1 . sx2, sy1 . sy2) multiplicativa!

r11 r21 0

r12 r22 0

tx ty 1

Preservam ngulos e comprimentos Ex.: Seqncia arbitrria de rotaes e translaes

3) Composio de Transformaes
Combinao de matrizes de transformao R, S e T Eficincia (uma s transformao composta substitui uma srie de transformaes sucessivas) Ex. 01: Rotao de um objeto em torno de um ponto arbitrrio P1:
1) Translao leva P1 origem 2) Efetua rotao 3) Efetua translao oposta

Ex. 02: Escala em relao a um ponto arbitrrio P1


(Translao para a origem, Escala, Translao oposta)

T(x1, y1) . S(sx, sy) . T(-x1, -y1) = = 1 0 0 0 x1 1 y1 0 1 sx 0 0 0 sy 0 0 0 1 1 0 0 0 -x1 1 -y1 0 1 = sx 0 0 0 sy 0 x1 . (1 sx) y1 . (1 sy) 1

(31)

Ex. 03: Escala e Rotao em relao a P1, posicionamento em P2


Fig. Rotao em relao a um ponto P1 ( ) (Translada P1 para a origem, Efetua escala e rotao desejadas, Translada origem para a nova posio P2)

T(x1, y1) . R() . T(-x1, -y1) =

1 0 0 cos sin 0

0 x1 1 y1 0 1 -sin cos 0

cos -sin sin cos 0 0

0 0 1

1 0 0

0 -x1 1 -y1 0 1

x1 . (1 cos) + y1 . sin y1 . (1 cos) x1 . sin 1

Fig. Escala e Rotao de uma casa

(30)

A matriz de transformao : T(x2, y2) . R() . S(sx, sy) . T(-x1, -y1)

Obs.: Se M1 e M2 representam duas transformaes fundamentais (translao, rotao ou escala), existem alguns casos especiais em que: M1 M 2 = M2 M1
. .

5) Eficincia
Uma composio genrica de transformaes R, S e T, produz uma matriz da forma:
M = r11 r21 0 r12 r22 0 tx ty 1

M1
Translao Escala Rotao Escala Uniforme Escala

M2
Translao Rotao Rotao

O clculo de M.P requer 9 multiplicaes e 6 adies. Como a ltima linha da matriz constante, os clculos efetivamente necessrios so:
x = x . r11 + y . r12 + tx y = x . r12 + y . r21 + ty

Nestes casos, no precisamos nos preocupar com a ordem de construo da matriz de transformao.

ou seja, quatro multiplicaes, duas adies.

(Como exerccio, verifique que isto verdade.)

Para obter a velocidade de apresentao necessria, as transformaes devem ser efetuadas sobre os pontos do objeto o mais rapidamente possvel. Uma aplicao em que a eficincia muito importante na criao de sucessivas vistas de um mesmo objeto. Se cada vista uma rotao de poucos graus da anterior, e puder ser gerada e apresentada suficientemente rpido, parecer ao observador que o objeto est sendo rotacionado continuamente (animao!). As equaes de rotao (7) requerem 4 multiplicaes e 2 adies, alm das 4 chamadas s funes trigonomtricas. Se pequeno (poucos graus), sabemos que cos 1. Nesse caso, podemos simplificar (7) para exigir 2 multiplicaes, 2 adies, duas chamadas a funes. (37)
x = x y . sin y = y + x . sin

A eficincia crtica nesse caso em particular (rotaes) porque os clculos envolvidos utilizam funes trigonomtricas e vrias multiplicaes em ponto-flutuante.

A equao acima aproxima os valores corretos de x, y, mas introduz um erro cumulativo. Uma aproximao melhor usaria x no lugar de x na 2a equao:
x = x y . sin y = x . sin + y = = (x y . sin) . sin + y = = x . sin + y . (1 sin2)

Matriz de rotao

R=

cos sin 0

-sin cos 0

0 0 1

Tomando as duas (trs) linhas da sub-matriz 2x2 (3x3) superior esquerda da matriz de rotao como 2 (3) vetores:
v1 = [cos - sin ], v2 = [sin cos ]

Assumindo que a matriz abaixo uma matriz de rotao, observe:


r11 r21 0 r11 r21 0 r12 r22 0 r12 r22 0 0 0 1 0 0 1 r11 r12 1 r21 r22 1
=

r11 . r11 + r12. r12 = 1 r21 . r11 + r22. r12 = 0 1 r11 . r21 + r12. r22 = 0 r21 . r21 + r22. r22 = 1 1

possvel mostrar que esses vetores apresentam 3 propriedades:


So vetores unitrios So perpendiculares entre si (seu produto escalar zero) Se esses vetores forem rotacionados pela matriz R(), eles iro se alinhar com as direes positivas dos eixos principais x e y (e z), respectivamente.

lembre que os vetores r1 e r2 so unitrios.

Exemplo
Essa informao til para derivar a matriz de rotao quando no se conhece o ngulo de rotao a ser aplicado, mas a orientao final desejada para o objeto:

Matriz resultante equivalente matriz de rotao R(90o) u

definindo dois vetores unitrios ortogonais entre si, u e v, que descrevem a orientao desejada para o objeto, a matriz de rotao necessria para reposicionar o objeto original segundo essa orientao dada por:
ux uy 0 vx vy 0 0 0 1

x x = (1,0); y = (0,1);

v u = (0,1) v = (-1,0)

Mudana entre sistemas de coordenadas


At o momento, discutimos transformaes sobre os pontos que definem um objeto assumindo que esses pontos (antes e depois) so dados relativos a um mesmo sistema de coordenadas.

Mudana entre sistemas de coordenadas


Para transformar descries de um objeto dadas em um sistema de referncia Oxy para um sistema Oxy, necessrio determinar a transformao que alinha os eixos xy com os eixos xy. No exemplo da figura a seguir, isso requer 2 passos: uma translao para alinhar as origens, seguida da rotao que alinha os eixos.

O sistema de coordenadas no se altera...

Uma forma equivalente de tratar transformaes geomtricas como uma mudana entre 2 sistemas de coordenadas: dado um objeto relativo a um sistema de referncia, queremos determinar suas coordenadas relativas a um outro sistema.

Fig. Um sistema de coordenadas Cartesiano x'y' posicionado em (x0, y0) com orientao em um sistema de coordenadas Cartesiano xy.

Mudana entre sistemas de coordenadas


Forma alternativa: usar diretamente os vetores que definem a orientao de Oxy para determinar a matriz de rotao

Fig. Posio do quadro de referncia mostrado na figura acima, aps transladar o sistema x'y' para que sua origem coincidisse com a origem do sistema xy.

Mxy xy = R(-) . T(-x0, -y0)

Fig. Sistema de coordenadas Cartesiano x'y' com origem em P0=(x0, y0) e eixo y' paralelo a um vetor V.

Exemplo transformao como mudana entre sistemas de coordenadas


u P3

P2

Fig. Um sistema Cartesiano x'y' definido com duas posies coordenadas, P0 e P1, dentro de um quadro de referncia xy.

P3 v B

P1 O = (xn,yn)xy u = (0,1) xy;

P1
Direo de y dada por v: v= V = (vx, vy) V Direo de x dada por: u = R(-90) . v = (vy, -vx) = (ux, uy)

P2

v = (-1,0) xy

Exemplo
Objeto na posio A deve ser transformado para a posio B.

Requer uma rotao de 90 em relao ao sistema Oxy, seguida de uma translao para Ouv

Matriz que transforma as coordenadas do objeto de um sistema Oxy para um sistema Ouv denotada: M xy uv

Problema pode ser tratado como o da converso do objeto na posio B dado no sistema de referncia Ouv para o sistema Oxy Abordagem consiste em alinhar o sistema Oxy ao sistema Ouv

No exemplo, M xyuv = T(xn,yn) . R(90o)

Uma forma alternativa consiste em definir a matriz de rotao em termos dos 2 vetores unitrios ortogonais entre si que definem a nova orientao do objeto

No caso, u= (0,1);v = (-1,0)

Transformao envolve a rotao de 90 (que alinha os eixos) seguida da translao de (xn,yn) que alinha as origens.

ux vx 0

uy 0 vy 0 0 1

Você também pode gostar