Вы находитесь на странице: 1из 43

Transformaes Geomtricas 1/43

Marcelo Gattass 4/10/2005


6. Transformaes Geomtricas



Para ilustrar a importncia das transformaes geomtricas na descrio da forma e dos
movimentos em cenrios virtuais, a Fig. 6.1 apresenta trs modelos. O primeiro um
modelo complexo de uma plataforma martima composta de muitos equipamentos, o
segundo de um tanque militar e o terceiro um brao mecnico.
A complexidade dos modelos da Fig. 6.1 pode ser reduzida se observarmos que cada
componente composta de um conjunto de sub-componentes. Estes podem, por sua vez
ser compostos de outros sub-componentes ou de formas geomtricas simples como
cilindros, cubos e calotas esfricas. A partir de modelos padres destes objetos mais
simples podemos gerar o modelo da cena atravs das transformaes geomtricas de forma
e movimento que so o foco deste captulo.

(a) plataforma martima

(b) tanque militar

(c) brao mecnico
Fig. 6.1 Exemplos de formas e movimentos descritos por transformaes.

Este captulo comea com uma reviso das transformaes lineares no plano e evolui para
transformaes no espao homogneo. A lgebra desenvolvida no espao homogneo
suficiente para dar suporte s operaes de modelagem de forma e movimento, exceto as
Transformaes Geomtricas 2/43
Marcelo Gattass 4/10/2005
rotaes no espao. Para elas se faz necessrio o estudo de quatrnios, conforme ser
mostrado no final do captulo.
Apesar de iniciar com uma reviso de conceitos conhecidos dos cursos de lgebra Linear,
este captulo evolui para assuntos que so tratados apenas nos cursos de Computao
Grfica. A reviso importante para estabelecer as ligaes entre a lgebra e a
Computao Grfica.

Transformaes Lineares e Matrizes

Para facilitar a visualizao dos processos geomtricos envolvidos, vamos iniciar o nosso
estudo de transformaes no R
2
. Como ilustra a Fig. 6.2, uma transformao T no R
2
uma
funo que associa a cada ponto p do plano um novo ponto p' tal que:
( ) p p T = ' (6.1a)
ou:
|
|

\
|
=
|
|

\
|
y
x
f
y
x
'
'
(6.1b)
x
y
x
y
P =
x
y
P =
x
y
x
y

Fig. 6.2 Transformao no R
2
.

Um exemplo de uma transformao genrica pode ser ilustrado por:
|
|

\
| +
=
|
|

\
|
xy
y x
y
x
2
'
'
(6.2)
Uma transformao dita linear quando a transformada de uma combinao linear for
sempre igual combinao linear dos vetores transformados. Ou seja, para quaisquer p
1
,
p
2
pertencentes ao plano ou ao espao e quaisquer que sejam a
1
, a
2
pertencentes aos reais,
) ( ) ( ) (
2 2 1 1 2 2 1 1
p p p p T a T a a a T + = + (6.2)

a transformao
Mp p = ) ( T (6.3)
Transformaes Geomtricas 3/43
Marcelo Gattass 4/10/2005
onde M uma matriz e p um vetor uma transformao linear, uma vez que o produto de
matrizes tem a seguinte propriedade:
2 2 1 1 2 2 1 1
) ( Mp Mp p p M a a a a + = + (6.4)
Inversamente, podemos tambm dizer que toda transformao linear pode ser escrita como
o produto de uma matriz por um vetor. Ou seja:
A transformao T Linear T(p)= Mp
Para determinar a matriz associada basta observar que:
|
|

\
|
+
|
|

\
|
=
|
|

\
|
+
|
|

\
|
=
|
|

\
|
=
1
0
0
1
)
1
0
0
1
( ) ( yT xT y x T
y
x
T T p (6.5)
Se tomarmos:
|
|

\
|
=
|
|

\
|
b
a
T
0
1
e
|
|

\
|
=
|
|

\
|
d
c
T
1
0
(6.6)
temos
|
|

\
|
(

=
|
|

\
|
+
|
|

\
|
=
y
x
d b
c a
d
c
y
b
a
x T ) (p (6.7)
Ou seja, a matriz de uma transformao linear aquela cujas colunas so as coordenadas
dos vetores da base transformada.
Como no utilizamos na derivao acima nada que seja especfico do R
2
, ento esta
propriedade geral, ou seja, ela vale para toda transformao linear sobre um espao
vetorial qualquer. No R
3
, por exemplo, esta matriz pode ser determinada por:
(
(
(

|
|
|

\
|
|
|
|

\
|
|
|
|

\
|
=
1
0
0
0
1
0
0
0
1
T T T M (6.8)

Outra propriedade importante das transformaes lineares que elas necessariamente
deixam inalterada a posio do vetor nulo. Esta propriedade deriva diretamente da
linearidade:
0 ) ( ) ( ) ( ) 0 ( = = = p p p p T T T T (6.9)
e , de certa forma, uma limitao importante das transformaes lineares.


Transformaes Geomtricas no Plano


Transformaes Geomtricas 4/43
Marcelo Gattass 4/10/2005
Exemplos importantes de transformaes lineares no plano so: escala, rotao, reflexo e
cisalhamento. A transformao de escala simplesmente multiplica todas as coordenadas x
por um fator s
x
e as coordenadas y por s
y
. A Fig. 6.3 ilustra a transformao de escala
aplicada ao tringulo abc.
x
y
a
=
x
y
x
y
a=
x
y
x
y
c
b

Fig. 6.3 Transformao de escala no R
2
.

A matriz da transformao de escala :
|
|

\
|
(

=
|
|

\
|

=
|
|

\
|
y
x
s
s
y s
x s
y
x
y
x
y
x
0
0
'
'
(6.10)
Escala no sentido comum implica em s
x
e s
y
positivos. Quando seus valores estiverem no
intervalo (0,1) teremos uma reduo da dimenso correspondente e quando forem maiores
que 1 teremos um aumento. Valores negativos tm o efeito de espelhar os pontos em torno
do eixo correspondente.
A transformao linear de espelhamento corresponde matriz identidade com alguns de
seus termos da diagonal com sinal negativo. O espelhamento em relao ao eixo y,
ilustrado na Fig. 6.4, corresponde matriz:
|
|

\
|
(

=
|
|

\
|
=
|
|

\
|
y
x
y
x
y
x
1 0
0 1
'
'
(6.11)
x
y
x
y
p'
=
x
y
p'
=
p'
=
= p
x
y
= p
x
y
p
x
y
x
y

Fig. 6.4 Transformao de espelhamento no R
2
.

Transformaes Geomtricas 5/43
Marcelo Gattass 4/10/2005
A rotao de um ngulo em torno da origem pode calculada com base na Fig. 6.5 por
meio das seguintes frmulas trigonomtricas:
sin cos cos sin ) sin( + = + (6.12a)
sin sin - cos cos ) cos( = + (6.12b)

x
y
p' =
x
y

r
x
y
p' =
x
y

r
x
y
p' =
x
y
p' =
x
y

r
x
y

r
x
y

r
x
y

rr
x
y
p =
x
y
x
y

r
rrrr

Fig. 6.5 Transformao de rotao no R
2
.

O ponto p' pode ser escrito como:
|
|

\
|
+

=
|
|

\
|
+
+
=
|
|

\
|




sin cos cos cos
sin sin cos cos
) sin(
) cos(
'
'
r r
r r
r
r
y
x
(6.13)
Dado que x=r cos e y=r sin temos:
|
|

\
|
(


=
|
|

\
|
y
x
y
x


cos sin
sin cos
'
'
(6.14)
Uma maneira bem mais simples de deduzir a matriz da rotao consiste em utilizar a
propriedade de que as colunas da matriz so as coordenadas dos vetores da base
transformados. A Fig. 6.6 ilustra a posio dos vetores ij aps uma rotao de um
ngulo . A simples leitura das coordenadas permite escrever a equao (6.14).
x
y

|
|

\
|
=

sin
cos
) (i T
|
|

\
|
=

cos
sin
) (j T
i
j
[ ]
(


=


cos sin
sin cos
M

Fig. 6.6 Deduo direta da matriz de rotao.

Transformaes Geomtricas 6/43
Marcelo Gattass 4/10/2005
O produto da transposta de uma matriz de transformao por ela mesma corresponde ao
produto interno dos vetores transformados entre si. Isto porque os elementos ij do produto
so o resultado da linha i da transposta pela coluna j. A linha i da transposta a coluna i da
matriz original. Ou seja, o elemento ij o resultado do produto interno do i-simo com o j-
simo vetor transformado.
Como, no caso da rotao, os vetores da base cannica rodada continuam sendo unitrios e
perpendiculares entre si, temos que o produto da transposta de uma matriz de rotao por
ela mesma resulta na matriz identidade. Como esta propriedade se origina do fato de a base
transformada continuar sendo de uma base de vetores ortonormais, diz-se que a matriz de
rotao uma matriz ortonormal.
Outro ponto importante a destacar a questo da mudana de referencial ou base.
Aprendemos na Fsica que as novas coordenadas de um ponto, aps um certo movimento,
so as mesmas que teramos se mantivssemos o ponto parado e movssemos o referencial
no sentido inverso. Assim, em termos de coordenadas, tanto faz rodarmos um ponto de um
ngulo ou escrevermos as coordenadas deste ponto num sistema de coordenadas rodado
de -, como ilustra a Fig. 6.7. Ou seja:
|
|

\
|
(


=
|
|

\
|
=
|
|

\
|
y
x
y
x
v
u


cos sin
sin cos
'
'
(6.15)

Este problema de mudana de uma base ortonormal para outra rodada bastante comum na
Computao Grfica e por isto merece ser melhor elucidado. Os vetores unitrios das
direes u e v so os vetores i e j rodados de -. Ou seja, se colocarmos as suas
coordenadas nas colunas de uma matriz, estamos representando a rotao de -. Para
obtermos a matriz de rotao basta que tomemos a transposta, ou seja, a matriz com as
coordenadas de u e v colocadas como linhas. Assim:
|
|

\
|
(

=
|
|

\
|
y
x
v v
u u
v
u
y x
y x
(6.16)
A propriedade expressa na equao (6.6) geral para qualquer espao vetorial e pode ser
enunciada da seguinte maneira: a matriz que transforma as coordenadas de um vetor
qualquer escrito numa base ortonormal para outra a matriz obtida colocando-se como
linhas as coordenadas dos vetores da segunda base escritos na primeira.
x
y
p
=
x
y
x
y
u
v
u
v
u
v
ou
x
y
p
=
x
y
x
y
p'
=
x
y
x
y


Transformaes Geomtricas 7/43
Marcelo Gattass 4/10/2005
Fig. 6.7 Transformao versus mudana de base.

No R
2
no difcil verificar a equao (6.16) observando as Fig. 6.6 e 6.7 e a equao
(6.15).
A ltima transformao linear de interesse geomtrico o cisalhamento. A transformao
de cisalhamento na direo x tem um efeito semelhante ao de deslizarmos um baralho de
cartas numa mesa, como ilustra a Fig. 6.8.
x
y
x
y


Fig. 6.8 Transformao de cisalhamento em x.

Esta transformao preserva a coordenada y e move os pontos na direo x de acordo com o
valor de y, ou seja:

|
|

\
|
(

=
|
|

\
| +
=
|
|

\
|
y
x
y
y x
y
x
1 0
tan 1 tan
'
'
(6.17)
No difcil deduzirmos a mesma matriz observando a transformada dos vetores da base
cannica.
O cisalhamento apresentado acima ocorre somente na direo x. Se ele ocorrer
simultaneamente em ambas as direes teremos uma transformao do tipo:
|
|

\
|
(

=
|
|

\
|
+
+
=
|
|

\
|
y
x
y x
y x
y
x
1 tan
tan 1
tan
tan
'
'

(6.18)
onde e so os ngulos de cisalhamento em relao aos eixos x e y, respectivamente.
Esta transformao muito utilizada na Mecnica dos Meios Contnuos e , erroneamente,
vista pelos alunos como sendo uma transformao que no diz respeito Computao
Grfica. Para ilustrarmos uma das utilidades desta transformao, considere o problema de
transformar a pirmide de viso simplificada da forma indicada na Fig. 6.9. Sem
cisalhamento no temos como fazer esta transformao. Explique por que a rotao no
pode ser usada nesse caso.
Transformaes Geomtricas 8/43
Marcelo Gattass 4/10/2005
x
y
x
y
a
b
c
c'
b'
a'
plano de projeo

Fig. 6.9 - Exemplo da necessidade da transformao de cisalhamento.

Conseqncia do Teorema da Decomposio Singular

Apesar da transformao de cisalhamento ser conveniente por dar uma interpretao
geomtrica direta para as transformaes do tipo da ilustrada na Fig. 6.9, a rigor ela
dispensvel. Isto porque o Teorema de Decomposio Singular garante que qualquer
matriz M de dimenso nn pode ser decomposta em:
USV M = (6.19)
onde U e V so matrizes ortonormais (rotaes) e S uma matriz diagonal (escala e
espelhamento). Na realidade o Teorema da Decomposio Singular mais geral, uma vez
que ele trata de quaisquer matrizes nm, mas para o estudo geomtrico que estamos
fazendo as matrizes so quadradas e esta generalidade pouco contribui.
A prova do Teorema da Decomposio Singular e a descrio de algoritmos que calculam
as matrizes USV esto fora do escopo deste captulo e podem ser encontradas em livros de
lgebra. Tais algoritmos, entretanto, so disponveis tanto na forma de funes C/C++
quanto em sistemas computacionais tipo Maple. Ou seja, mesmo sem tratarmos da prova e
da implementao, podemos calcular a decomposio e utilizar os resultados do teorema.
Considere, por exemplo, uma transformao de cisalhamento de 30 no eixo x. A matriz
desta transformao dada por:
(

=
(

=
1 0
5773 . 0 1
1 0
30 tan 1
0
M
Esta matriz, decomposta em seus valores singulares, resulta em:
(

=
(

0.7992 0.6011
0.6011 - 0.7992
1.3295 0
0 0.7522
0.6011 0.7992 -
0.7992 0.6011
1 0
5773 . 0 1

ou
(

=
(

) cos(37 ) sin(37
) sin(37 - ) cos(37
1.3295 0
0 0.7522
) cos(-53 ) sin(-53
) sin(-53 - ) cos(-53
1 0
30 tan 1
0 0
0 0
0 0
0 0 0

Transformaes Geomtricas 9/43
Marcelo Gattass 4/10/2005
Estas matrizes correspondem s transformaes de rotao e escala, da forma:
) 37 ( ) 53 ( ) 30 (
0 0 0
SR R Sh =
x

A Fig. 6.10 ilustra este processo de escrever um cisalhamento como uma combinao de
rotaes e escala.
(

1 0
5773 . 0 1
(

0.799165 0.601112
0.601112 - 0.799165
(

1.329476 0
0 0.752176
(

0.601112 0.799165 -
0.799165 0.601112
) 30 (
0
x
Sh
) 37 (
0
R
S
) 53 (
0
R

Fig. 6.10 - Cisalhamento escrito como composio de transformaes.

Transformaes lineares e translaes

As transformaes lineares possuem diversas propriedades interessantes mas, infelizmente,
existem algumas transformaes importantes para a Computao Grfica que no podem
ser classificadas como lineares. Uma delas a translao, na qual para cada ponto somado
um vetor constante, t. Esta transformao fundamental para qualquer processo grfico e
por isto deve ter a representao mais simples possvel.
Dado um ponto qualquer P, a translao pode ser escrita como:
|
|

\
|
+
|
|

\
|
=
|
|

\
|
+ =
y
x
t
t
y
x
y
x
'
'
' t p p (6.20)
A Fig.6.11 ilustra a translao de um vrtice de um pentgono.
Transformaes Geomtricas 10/43
Marcelo Gattass 4/10/2005
y
x
x
y |
|

\
|
=
y
x
t
t
t

Fig. 6.11 - Translao no R
2
.
Esta transformao no linear porque no preserva a origem, isto , a transformada do
vetor zero t, que diferente de zero. Conseqentemente a translao tambm no pode ser
escrita na forma:
|
|

\
|
(

=
|
|

\
|
y
x
d b
c a
y
x
'
'

com a, b, c e d constantes reais. A forma matricial com matrizes 22, comumente
apresentada no estudo de transformaes lineares afins
1
, :
|
|

\
|
+
|
|

\
|
(

=
|
|

\
|
y
x
t
t
y
x
y
x
1 0
0 1
'
'
(6.21)
Esta forma tem o inconveniente de complicar a composio de transformaes. Isto porque,
se duas transformaes lineares so dadas por M
1
e M
2
, a sua composta dada
simplesmente por M
3
= M
2
M
1
. J se a transformao for do formato p
1
=M
1
p+t
1
e
p
2
=M
2
p
1
+t
2
, a composta p
2
=M
3
p+t
3
tal que M
3
= M
2
M
1
e t
3
= M
2
t
1
+t
2
. Se
continuarmos a compor as transformaes a expresso da translao vai se complicando
mais ainda.

Espao homogneo

Existe uma maneira algebricamente elegante de tratarmos translaes como combinaes
lineares. Basta imaginarmos o R
2
como sendo um plano imerso num espao de dimenso
trs. Para no associarmos este espao ao R
3
vamos denominar os eixos deste de sistema
x
h
, y
h
, w. Estas coordenadas so chamadas de homogneas ou projetivas PR
2
por razes
que ficaro claras ao longo deste captulo.

1
O termo transformao linear afim vem do termo em ingls afine linear transformation, que tem o
sentido de uma transformao aparentada com a linear. As transformaes lineares afins so transformaes
lineares acrescidas da translao.
Transformaes Geomtricas 11/43
Marcelo Gattass 4/10/2005
Podemos tratar a translao de vetores do R
2
como uma transformao linear de pontos que
esto no plano w=1 associando a cada ponto deste plano sua coordenada incrementada das
coordenadas do vetor t, como ilustra a Fig. 6.12. A seguinte transformao linear:

(
(
(

(
(
(

=
(
(
(

1 1 0 0
1 0
0 1
1
'
'
y
x
t
t
y
x
y
x
(6.22)
descreve a translao que o ocorre no plano w=1. Note que os pontos que esto
inicialmente neste plano permanecem nele. Isto continua valendo para transformaes mais
gerais, desde que a ltima linha da matriz permanea [0 0 1].
Devemos observar que, para qualquer ponto do R
2
com coordenadas (x, y)
T
, existe um
nico ponto no sistema homogneo dado por [x, y, 1]
T
e vice-versa. Esta associao de um
para um, denominada homeomorfismo ou isomorfismo, permite que matrizes 33 possam
representar transformaes do R
2
e matrizes 44 representem transformaes do R
3
. Para
evitar confuses entre um vetor homogneo do R
2
e um vetor cartesiano do R
3
, que tambm
tem 3 coordenadas, adotamos a notao [ ] para os homogneos e ( ) para os cartesianos.
y
h
x
h
w
w=1
x
y
t
y
h
x
h
w
w=1
x
y
t

Fig. 6.12 - Imerso do R
2
no sistema homogneo x
h
, y
h
e w.
Esta base homognea permite um mesmo tratamento algbrico para as transformaes
lineares e para as translaes. O produto de matrizes modela a composio destas
transformaes.

Composio de transformaes afins

Para ilustrar o processo de composio de transformaes afins com o uso de coordenadas
homogneas, considere a transformao que roda um tringulo em torno do seu centro. Esta
Transformaes Geomtricas 12/43
Marcelo Gattass 4/10/2005
transformao pode ser escrita como uma composio de uma translao do centro de
rotao para a origem seguida de uma rotao em torno da origem e, finalmente, uma
translao do centro de volta para sua posio original, como mostra a Fig. 6.13.
x
y
x
0
y
0

x
y
x
y

x
y
x
0
y
0
1 0
0 1
0 0 1
0
0

(
(
(
x
y
(
(
(

1 0 0
1 0
0 1
0
0
y
x
cos sin
sin cos


(
(
(
0
0
0 0 1
x
y
x
0
y
0

x
y
x
0
y
0

x
y
x
y

x
y
x
0
y
0
1 0
0 1
0 0 1
0
0

(
(
(
x
y
(
(
(

1 0 0
1 0
0 1
0
0
y
x
cos sin
sin cos


(
(
(
0
0
0 0 1

Fig. 6.13 - Composio de transformaes escritas em coordenadas homogneas.

Assim sendo, a equao da transformao que faz a rotao de em torno de um ponto
(x
0
, y
0
)
T
, ou [x
0
, y
0
, 1]
T
, dada por:

(
(
(

(
(
(

(
(
(


(
(
(

=
(
(
(

1 1 0 0
1 0
0 1
1 0 0
0 cos sin
0 sin cos
1 0 0
1 0
0 1
1
'
'
0
0
0
0
y
x
y
x
y
x
y
x


(6.23)
Note que o produto de matrizes no comutativo, AB BA, o que tambm se reflete nas
transformaes geomtricas associadas. O que torna o problema um pouco confuso a
ordem de leitura de texto normal, da esquerda para a direita que corresponde ordem
inversa em que as transformaes so aplicadas. Para colocar ambos na mesma ordem, os
primeiros textos de Computao Grfica escreveram as equaes matriciais transpostas, ou
seja, os vetores eram linhas e multiplicavam as matrizes pelo lado esquerdo. Com o tempo,
a notao convencional da Matemtica acabou prevalecendo e a ordem de leitura para
transformaes deve ser a ordem de multiplicao do vetor, da direita para a esquerda.



Transformaes Geomtricas 13/43
Marcelo Gattass 4/10/2005
Transformaes Geomtricas no Espao

As transformaes de escala, rotao e translao so as mais comumente utilizadas nas
cenas compostas por diversos objetos pois atendem ao problema de instanciao de objetos
numa cena. As matrizes de translao e escala so uma simples extenso das
transformaes do plano e, no R
3
homogneo, so dadas, respectivamente, por:
|
|
|
|
|

\
|
(
(
(
(

=
|
|
|
|
|

\
|
1 1 0 0 0
1 0 0
0 1 0
0 0 1
'
'
'
z
y
x
t
t
t
w
z
y
x
z
y
x
e (6.24a)
|
|
|
|
|

\
|
(
(
(
(

=
|
|
|
|
|

\
|
1 1 0 0 0
0 0 0
0 0 0
0 0 0
'
'
'
z
y
x
s
s
s
w
z
y
x
z
y
x
(6.24b)

As matrizes de rotao no espao, entretanto, so bem mais complicadas do que a matriz de
rotao no plano. Uma extenso natural seria definirmos a rotao de um corpo a partir de
trs rotaes em torno da cada um dos eixos cartesianos, como ilustra a Fig. 6.14.
x
y
z

z

Fig. 6.14 Rotaes em torno dos eixos cartesianos.

Se utilizarmos o fato de que as colunas da matriz so as coordenadas dos vetores da base
transformada, podemos facilmente derivar as matrizes de cada uma destas rotaes. Para
exemplificar, vamos considerar a rotao em torno do eixo y. A Fig. 6.15 mostra a posio
dos vetores unitrios da base cannica antes e depois da rotao de
y
.
Transformaes Geomtricas 14/43
Marcelo Gattass 4/10/2005
x
y
z
'

i
'

j
'

y

'

k
'

i
k

z
x
'

j j =

y

Fig. 6.15 Rotao em torno do eixo y.
As coordenadas cartesianas dos vetores da base cannica depois da rotao so dadas por:
|
|
|

\
|

=
y
y

sin
0
cos
'

i ,
|
|
|

\
|
=
0
1
0
'

j e
|
|
|

\
|
=
y
y

cos
1
sin
'

k
A rotao escrita em forma de matriz resulta em:
|
|
|

\
|
(
(
(

=
|
|
|

\
|
z
y
x
z
y
x
y y
y y


cos 0 sin
0 1 0
sin 0 cos
'
'
'
(6.25)
Esta rotao pode tambm ser escrita em coordenadas homogneas como:
(
(
(
(

(
(
(
(

=
(
(
(
(

1 1 0 0 0
0 cos 0 sin
0 0 1 0
0 sin 0 cos
1
'
'
'
z
y
x
z
y
x
y y
y y


(6.26a)
Analogamente, podemos derivar a rotao em torno de x e z chegando a:
(
(
(
(

(
(
(
(

=
(
(
(
(

1 1 0 0 0
0 cos sin 0
0 sin cos 0
0 0 0 1
1
'
'
'
z
y
x
z
y
x
x x
x x


(6.26b)
e
(
(
(
(

(
(
(
(


=
(
(
(
(

1 1 0 0 0
0 1 0 0
0 0 cos sin
0 0 sin cos
1
'
'
'
z
y
x
z
y
x
z z
z z


(6.26c)
respectivamente. A Fig. 6.16 ilustra estas rotaes aplicadas base cannica para estes
dois casos.
Transformaes Geomtricas 15/43
Marcelo Gattass 4/10/2005
x
y
z

x
'

i
'

j
'

k
'

i
'

j
'

k

x
y
z
'

i
'

j
'

z

|
|
|

\
|
=
0
0
1
'

i
|
|
|

\
|
=
x
x

sin
cos
0
'

j
|
|
|

\
|
=
x
x

cos
sin
0
'

k

|
|
|

\
|
=
0
sin
cos
'

z
z

i
|
|
|

\
|
=
0
cos
sin
'

z
z

j
|
|
|

\
|
=
1
0
0
'

k

(a) Rotao em torno do eixo x (a) Rotao em torno do eixo z

Fig. 6.16 Matrizes das rotaes em torno dos eixos coordenados.

Instanciao de objetos e hierarquia de movimentos

Quando instanciamos um objeto numa cena, aplicamos transformaes geomtricas que
colocam o modelo geomtrico padro do objeto no tamanho e na posio corretos na cena.
Considere, por exemplo, o modelo do brao mecnico simples ilustrado na Fig. 6.17. O
cubo unitrio mostrado na esquerda pode ser utilizado como o modelo geomtrico padro
tanto do brao quanto do ante-brao do brao mecnico mostrado direita
2
. Basta que o
cubo seja escalado, rodado e transladado de forma adequada.

(a) objeto padro no espao do modelo
brao
ante-brao
brao
ante-brao

(b) objetos instanciados no espao da cena
Fig. 6.17 Instanciao de objetos num brao mecnico simples.

Antes de prosseguirmos com a discusso de como instanciar objetos que obedecem uma
hierarquia, vamos esclarecer as questes de ordem e de interpretao geomtrica das
composies de transformaes.
A Fig. 6.18 mostra um exemplo simples que procura enfatizar o fato de que a ordem das
transformaes altera o resultado. Nesta figura os vrtices de um quadrado sofrem uma

2
Usamos aqui a nomenclatura do brao humano para facilitar a referncia s partes do brao mecnico no
texto.
Transformaes Geomtricas 16/43
Marcelo Gattass 4/10/2005
translao e uma rotao. Na Fig. 6.18a a rotao ocorre antes da translao e na Fig. 6.18b
ocorre a ordem inversa. Os resultados so claramente diferentes. Esta diferena tambm
aparece na formulao matricial. As opes a e b da Fig. 6.18 tm as seguintes expresses
algbricas:
TRp p =
2
(6.27a)
ou:
RTp p =
2
(6.27b)
Como o produto de matrizes no comutativo, estas equaes produzem, em geral,
resultados diferentes.

x
y
|
|

\
|
=
y
x
p
x
y
|
|

\
|
=
y
x
p
R x
y
|
|

\
|
=
2
2
2
y
x
p
R x
y
|
|

\
|
=
2
2
2
y
x
p
T
x
y
|
|

\
|
=
1
1
1
y
x
p
T
x
y
|
|

\
|
=
1
1
1
y
x
p
R
x
y
|
|

\
|
=
1
1
1
y
x
p
R
x
y
|
|

\
|
=
1
1
1
y
x
p
x
y
|
|

\
|
=
2
2
2
y
x
p
T
x
y
|
|

\
|
=
2
2
2
y
x
p
x
y
|
|

\
|
=
2
2
2
y
x
p
T
(a)
(b)

Fig. 6.18 Ordem das transformaes.

A Fig. 6.18 mostra tambm que, se trabalhamos com matrizes de transformaes
geomtricas em torno da origem, melhor aplicarmos escala, rotao e translao nesta
ordem. Assim no temos a interferncia da transformao de escala ou de rotao na
posio do objeto.
A escala, a rotao e a translao, entretanto, podem no ser simples de serem especificadas
em cenas como esta, em que a posio de um objeto depende da posio de outros. Esta
dependncia cria uma hierarquia na qual a posio do brao da Fig. 6.17, por exemplo,
depende da posio do ante-brao.
Para seguir uma cadeia de transformaes que ocorre em objetos articulados como o brao
mecnico conveniente pensarmos em outra interpretao geomtrica para as
transformaes. Ao invs de considerarmos as transformaes como ocorrendo nos
objetos, podemos pensar nelas ocorrendo num sistema de eixos, chamados de eixos locais,
que rodam e transladam. A idia geral que os eixos locais esto originalmente
coincidentes com os eixos globais. A cada transformao de rotao e translao, o eixo
local muda de posio. Quando algum objeto for desenhado, ele estar referenciado no
sistema local transformado.
Transformaes Geomtricas 17/43
Marcelo Gattass 4/10/2005
A Fig. 6.19 apresenta um exemplo de um sistema de eixos locais x
L
y
L
para o problema de
rotao e translao do quadrado. A idia consiste em lermos a expresso algbrica desta
transformao dada pela equao (6.27b) da esquerda para a direita. Nesta leitura primeiro
encontramos a rotao, depois a translao na direo do eixo x
L
e, finalmente, o
posicionamento dos pontos neste sistema rodado e transladado. Note na Fig. 6.19 que a
posio final do quadrado corresponde exatamente posio esperada na Fig. 6.18b.
Apenas a maneira de interpretar geometricamente as transformaes muda.
x
y
L
x
y
x L
R
x
y
L
x
y
x L
R
x,x
L
y,y
L
x,x
L
y,y
L
x L
yL
T
L
x
y
x L
yL
T
L
x
y
p
2

Fig. 6.19 Raciocnio com eixos locais.

Por que o resultado equivalente? Acontece que no caso da Fig. 6.18b p
2
=RTp, enquanto
no caso da Fig. 6.19 p
2
=T
L
Rp. Para provar que a posio de p
2
a mesma em ambas as
figuras preciso mostrar que T
L
R=RT. Isto pode ser verificado se notarmos que uma
translao na direo x
L
pode ser escrita como sendo a concatenao de 3 transformaes:
(i) rotao que roda o eixo x
L
para que ele fique alinhado com o eixo x (R
-1
), (ii) translao
em x (T), e (iii) rotao de volta para a posio original de x
L
(R). Ou seja, T
L
= RTR
1
.
Sendo assim T
L
R

= RTR
1
R=RT,

como queramos mostrar. Em geral a transformao em
um sistema de eixos transformado obtida pela concatenao da transformao de eixos
inversa, a transformao do objeto e a transformao de eixo original. Quando estas trs
matrizes multiplicam a transformao original, ocorre a mesma inverso da ordem
mostrada no exemplo. Ou seja, apesar de nossa argumentao ser especfica para
problemas de rotao seguida da translao, o caso geral pode ser demonstrado de forma
semelhante.
Com a idia de eixos locais, a instanciao de objetos para compor o brao mecnico
simples mais fcil de ser organizada. Considere os eixos locais colocados no esqueleto do
brao mecnico como mostra a Fig. 6.20. A partir dos eixos xyz a cinemtica do brao
mecnico pode ser descrita seguindo a ordem dos objetos, como ilustra o Quadro 6.1.

x
2
y
z
2
x z
y
2
x
4
y
4
z
4
x
1
y
1
z
1
x
3
y
3
z
3
x
5 z
5
y
5
d
1
d
2

x
2
y
z
2
x z
y
2
x
4
y
4
z
4
x
6
x
1
y
1
z
1
x
3
y
3
z
3
x
5 z
5
y
5
d
1
d
2

Fig. 6.20 Eixos locais do brao mecnico.
Transformaes Geomtricas 18/43
Marcelo Gattass 4/10/2005

Desenha a base no sistema xyz;
Roda em y;
Roda em z1;
Translada em y1 de d1/2;
Desenha o ante-brao no sistema x2y2z2;
Translada em y1 de d1/2;
Desenha cotovelo no sistema x3y3z3;
Roda em z3;
Translada em y3 de d2/2;
Desenha o brao no sistema x4y4z4;
Translada em y3 de d2/2;
Desenha o pulso no sistema x5y5z5;
Roda em z5;
Desenha a mo no sistema x
5
y
5
z
5
;
Quadro 6.1 Procedimento para instanciar objetos no brao mecnico simples.

interessante notarmos que o procedimento de instanciao do Quadro 6.1 resulta na
cadeia de matrizes mostrada na Tabela 6.1.
base I
ante-brao R
y
R
z1
T
y1
cotovelo R
y
R
z1
T
y1
T
y1
brao R
y
R
z1
T
y1
T
y1
R
z3
T
y3

pulso R
y
R
z1
T
y1
T
y1
R
z3
T
y3
T
y3

mo R
y
R
z1
T
y1
T
y1
R
z3
T
y3
T
y3
R
z5

Tabela 6.1 Cadeia de matrizes para instanciar objetos.

Sistemas grficos como o OpenGL
TM
trabalham com o conceito de matriz corrente para
tratar as transformaes que levam do espao do modelo para o espao da cena. Desta
forma apenas uma matriz fica armazenada no sistema grfico para esta funo. Todos os
vrtices das primitivas que esto sendo definidas so transformados por ela. O sistema
grfico fornece funes para iniciar e alterar esta matriz. No OpenGL
TM
esta matriz
chamada de matriz de modelagem e visualizao (model view) e as transformaes so
acumuladas direita. Ou seja, ao fornecermos ao sistema uma nova matriz M, ela
multiplicada pela esquerda pela matriz corrente C e a nova matriz corrente assume o valor
CM. Geometricamente isto significa que a transformao M ocorre antes das
transformaes acumuladas em C. Isto bastante conveniente para a forma de instanciar
objetos descrita acima. Considere, por exemplo, o procedimento do brao mecnico
simples ilustrado no Quadro 6.1. Este quadro se traduz diretamente no seguinte trecho
cdigo OpenGL
TM
:
glMatrixMode(GL_MODELVIEW); /* transformaes do modelo */
glLoadIdentity( ); /* carrega a identidade como corrente */
desenhaBase( );
glRotatef(ry, 0.,1.,0.); /* roda em y */
glRotatef(rz1, 0.,0.,1.); /* roda em z1 */
glTranslatef(0.,d1/2,0.); /* translada em y1 */
desenhaAnteBraco( );
glTranslatef(0.,d1/2,0.); /* translada em y1 */
Transformaes Geomtricas 19/43
Marcelo Gattass 4/10/2005
desenhaCotovelo( );
glRotatef(rz3, 0.,0.,1.); /* roda em z3 */
glTranslatef(0.,d2/2,0.); /* translada em y3 */
desenhaBraco( );
glTranslatef(0.,d2/2,0.); /* translada em y3 */
glRotatef(rz5, 0.,0.,1.); /* roda em z5 */
desenhaPulso( );
desenhaMao( );
Quadro 6.2 Trecho de cdigo OpenGL para o brao mecnico simples.

Nos procedimentos acima, omitimos uma dificuldade comum das hierarquias de
instanciao: elas no so sempre representveis por uma cadeia de transformaes que s
aumenta, acrescentando uma matriz direita, como mostra a Tabela 6.1. Considere, por
exemplo, um rob de dois braos e o detalhe do modelo da mo ilustrados na Fig. 6.21

x
5
y
5
y
6
y
7
y
8
y
9
x
6
x
7
x
8
x
9
a
b
c
e e f

base
brao direito brao esquerdo

(a) rob de 2 braos
palma
base dos dedos
dedo direito dedo esquerdo

(b) detalhe da mo
Fig. 6.21 Hierarquia em rvore em um rob de dois braos.

Quando a hierarquia do modelo representada por uma rvore, ao terminar de percorrer um
dos ramos desejamos recuperar a matriz do n quando primeiro chegamos a ele. Assim, por
exemplo, mais conveniente definirmos tanto o dedo da direita quanto o da esquerda da
mo do rob a partir da base dos dedos.
Para dar suporte a modelos hierrquicos, alguns sistemas grficos permitem que a cena seja
descrita por uma rvore na qual os ns podem ser tanto transformaes quanto modelos
geomtricos de objetos.
O sistema OpenGL implementa um mecanismo de pilha para a matriz de transformao.
Com ele o programador pode percorrer a rvore salvando e recuperando as matrizes dos ns
Transformaes Geomtricas 20/43
Marcelo Gattass 4/10/2005
tipo pai atravs de mecanismos de push e pop na pilha. O Quadro 6.3 mostra uma funo
para desenhar os dedos esquerdo e direito a partir da transformao corrente em x
7
y
7
z
7
.
Note que neste caso simples poderamos acumular as transformaes indo do centro do
dedo esquerdo ao centro do dedo direito, mas o mecanismo de pilha torna o cdigo mais
claro. Ele tambm importante para implementarmos funes que possam ser utilizadas
em vrios programas. Com o mecanismo de push e pop na pilha podemos garantir que a
funo retorna sem alterar o estado corrente das transformaes, ou seja, sem efeitos
colaterais indesejados.
void desenhaDedos( float b, float c, float f, float f)
{
/* dedo esquerdo */
glPushMatrix(); /* Salva matriz corrente C
0
*/
glTranslatef((f+e)/2,(b+c)/2,0.); /* C=CT
esq
*/
glScalef(e,c,e); /* C=CS */
glutSolidCube(1.0);
glPopMatrix(); /* Recupera da pilha C=C
0
*/
/* dedo direito */
glPushMatrix(); /* Salva matriz corrente C
0
*/
glTranslatef((f+e)/2,(b+c)/2,0.); /* C=CT
dir
*/
glScalef(e,c,e); /* C=CS */
glutSolidCube(1.0);
glPopMatrix(); /* Recupera da pilha C=C
0
*/
}
Quadro 6.3 Funo exemplo de uso de push e pop.

Estrutura das matrizes de transformaes homogneas

Em geral a matriz de uma transformao escrita em coordenadas homogneas tem a
seguinte estrutura:
[ ] ( )

(

1 s
t M
(6.28)
Se as dimenses da matriz M e do vetor s forem 22 e 12, respectivamente, a
transformao no R
2
, ao passo que se estas dimenses forem 33 e 13 trata-se do espao
R
3
. Neste captulo, mantivemos os pontos dentro dos hiperplanos homogneos, w=1,
mantendo a ltima linha com s=0. No estudo de transformaes projetivas que faremos no
prximo captulo, a ltima linha destas matrizes assume outros valores.
A forma matricial homognea apresentada na equao (6.29) pode representar: (a)
transformaes lineares, (b) translaes e (c) transformaes afins (transformaes lineares
acrescidas de translaes) resultando em:
[ ] ( )

(

1 0
0 M
, (6.29a)
Transformaes Geomtricas 21/43
Marcelo Gattass 4/10/2005
[ ] ( )

(

1 0
t I
, (6.29b)
[ ] ( )

(

1 0
t M
, (6.29c)
respectivamente. Nesta equao, I a matriz identidade.
A equao (6.30c) representa uma transformao linear M seguida de uma translao. Isto
porque:
[ ] ( )

[ ] ( )

[ ] ( )

(

=
(

1 1 1 0
t M
0
0 M
0
t I
(6.30a)
Caso a ordem fosse inversa teramos:
[ ] ( )

[ ] ( )

[ ] ( )

(

=
(

1 1 1 0
Mt M
0
t I
0
0 M
(6.30b)
Como esperado, a ordem influi no resultado e as matrizes so diferentes. No caso (6.30b) a
translao no pode ser lida diretamente da ltima coluna da matriz. Ela est transformada
pela a rotao que foi aplicada depois.
Como a ltima linha das matrizes das transformaes lineares afins uma linha do tipo
[0...0 1] e estas matrizes mantm os pontos do plano w=1 dentro dele mesmo, sabemos
que, por exemplo, dado um ponto qualquer do R
2
, [x y 1]
T
, sua transformada
necessariamente um ponto da forma [x y 1]
T
. Por isto alguns sistemas grficos usam
matrizes 23 ou 34 para especificar uma transformao linear afim no R
2
ou R
3
. A ltima
coluna fica implicitamente definida como sendo [0 0 1]
T
ou [0 0 0 1]
T
. Ou seja, s uma
forma econmica (ainda que s vezes confusa) de escrever matrizes que so de fato 33 ou
44.

Rotaes no Espao

Poderamos imaginar que qualquer rotao no espao pode ser especificada por trs ngulos
compondo as trs rotaes em torno dos eixos cartesianos. Seguir por este caminho requer
alguns cuidados. Primeiramente, as rotaes no comutam, ou seja, o efeito de duas
rotaes seguidas depende da ordem em que elas so aplicadas. Considere por exemplo a
coruja da Fig. 6.22. Suponha que desejemos aplicar sobre ela um vetor de rotao (90
o
, 0,-
90
o
). Ou seja, rodaramos de 90
o
em torno do eixo x e de -90
o
em torno do eixo z. Observe
que a posio final seria completamente diferente se aplicamos a rotao na ordem xz ou na
ordem zx.
Algum poderia argumentar que bastaria definirmos uma ordem para as rotaes para
eliminarmos as ambigidades. Por exemplo, rodaramos sempre em torno do eixo x, depois
em torno do eixo y e, finalmente, em z. Assim, por exemplo, a coruja de cara para baixo
Transformaes Geomtricas 22/43
Marcelo Gattass 4/10/2005
seria representada pelo vetor rotao (90
o
, 90
o
, 0). Para visualizar este vetor, considere
como passar da coruja deitada de lado aps a rotao de 90
o
em x mostrada na Fig. 6.22
para a posio final desejada (veja a linha tracejada).

o
x
90 =
o
x
90 =
o
z
90 =
o
z
90 =
o
x
90 =
o
x
90 =
o
z
90 =
o
z
90 =
o
y
90 =

Fig. 6.22 Rotaes no comutam.

Esta forma de representar as rotaes, chamada ngulos de Euler, historicamente a
parametrizao mais popular de rotaes no espao. Na literatura da Aeronutica, por
exemplo, estas rotaes tm at nomes prprios como roll, pitch e yaw. O ngulo de
rolagem (roll) a manobra em que o avio roda em torno de seu eixo longitudinal. O
ngulo de ataque (pitch) a inclinao para baixo ou para cima e yaw a rotao do avio
em torno de um eixo vertical.
Em termos matriciais, uma rotao especificada pelos ngulos de Euler resulta numa matriz
que a multiplicao das matrizes dadas nas equaes (6.26). Ou seja, para uma rotao
definida por (
x
,
y
,
z
), a matriz dada por:
(
(
(
(

+
+

= =
1 0 0 0
0
0
0
) , , (
y x z x z y x z x z y x
y x z x z y x z x z y x
y z y z y
x y z z y x
c c c s s s c s s c s c
c s c c s s s s c c s s
s s c c c
R R R R (6.31)
Transformaes Geomtricas 23/43
Marcelo Gattass 4/10/2005
onde s
x
e c
x
so o seno e o co-seno de
x
e s
y
c
y
so o seno e o co-seno de
y
,
respectivamente.
A parametrizao de rotaes no espao por ngulos de Euler, entretanto, apresenta
diversos problemas. Um dos mais perturbadores o chamado Gimbal lock, que tambm
ocorre com instrumentos, como o giroscpio de um avio, para determinados valores de
rotao. Considere, por exemplo, a Fig. 6.23, na qual o boneco sofre uma rotao de
(30,90,60). Vamos imaginar que o animador gostaria de rodar o boneco de lado,

x
= 30, inclinar o boneco para frente
y
= 90 e levantar seu brao esquerdo. Ao aplicar a
rotao em torno de z este efeito de toro em torno do eixo longitudinal j no pode ser
aplicado. A rotao de
y
= 90 fez com que a rotao em torno de z fosse equivalente a
uma rotao em torno de x. A seqncia mostrada na Fig. 6.23b coloca o boneco na mesma
posio compondo as rotaes em x e z.


original

x
= 30

x
=30,
y
=90

x
=30,
y
=90,
z
=60
(a) seqncia para os ngulos de Euler (30,90,60)

original

x
= -60

x
=-60,
y
=90
(b) mesmo resultados com apenas rotaes em x e y
Fig. 6.23 Gimbal lock.

Esta perda de um grau de liberdade tambm pode ser vista algebricamente na matriz de
rotao dada pela equao (6.31). Se atribuirmos
y
=90 a matriz se reduz para:

(
(
(
(

+
+

=
1 0 0 0
0 0
0 0
0 1 0 0
) , 90 , (
z x z x z x z x
z x z x z x z x
z
o
x
c s s c s s c c
c c s s s c c s
R
Utilizando as frmulas da trigonometria que tratam do seno e do co-seno da diferena de
ngulos (veja as equaes (6.12)) chegamos a:
Transformaes Geomtricas 24/43
Marcelo Gattass 4/10/2005
(
(
(
(

=
1 0 0 0
0 0 ) sin( ) cos(
0 0 ) cos( ) sin(
0 1 0 0
) , 90 , (
z x z x
z x z x
z
o
x


R
Esta matriz corresponde a uma rotao que no consegue tirar os braos do boneco do
plano onde ele est deitado. Existe apenas um grau de liberdade, apesar de especificarmos
dois valores.
Os ngulos de Euler apresentam outro problema srio: no so parmetros adequados para
interpolaes. Suponha, por exemplo, que desejemos interpolar o movimento do boneco
entre o quadro inicial e o quadro final mostrados na Fig. 6.24 b e c, respectivamente.
Algebricamente o vetor intermedirio deveria ser calculado por interpolao, gerando, por
exemplo:
|
|
|

\
|

|
|
|

\
|

|
|
|

\
|
0
90
0
45
45
0
90
0
0
0
0
0
0

A Fig. 6.24c ilustra esta posio intermediria. Note que a interpolao natural no traria
a cabea do boneco to para a frente, longe do plano vertical (verde na figura). Numa
animao, o natural seria ele rolar e cair sem que o eixo do corpo se afaste muito do plano
vertical (verde).

(a) original (b) quadro inicial (c) intermedirio (d) quadro final
Fig. 6.24 Posio inadequada de um quadro intermedirio.

Geometricamente, Euler provou em 1775 que dadas duas posies rotacionadas de um
objeto sempre possvel levar de uma posio a outra atravs de uma nica rotao
definida atravs de um eixo e um ngulo. Esta rotao tem o mesmo comportamento que a
interpolao de duas posies pelo segmento de reta que os une: sai da primeira posio
direto para a segunda sem oscilaes indesejveis.

Rotaes em torno de uma eixo qualquer

Transformaes Geomtricas 25/43
Marcelo Gattass 4/10/2005
Antes de evoluirmos na questo da interpolao de rotaes, vamos estudar melhor o
processo geomtrico que ocorre durante uma rotao em torno de um eixo. Inicialmente
vamos admitir que o eixo passe pela origem.
Sejam o ponto original p, o ponto transformado p' e o eixo definido pelo vetor unitrio ,
como ilustra a Fig. 6.25.
e
p

p
||
p
v

p
||
p
v
' p
x
y
z

= p e v

p
p
' p
v

p
p
' p
v


Fig. 6.25 Rotao de p de em torno de gerando p'.

O vetor p na figura acima est decomposto em dois vetores, um paralelo a e outro
perpendicular:

+ = p p p
||
(6.32)
A rotao do ponto p uma transformao linear e pode ser escrita como:
) ( ) ( '
||
+ = p p p R R (6.33)
A componente paralela permanece inalterada. A componente perpendicular rodada do
ngulo , como ilustra a Fig. 6.25. Esta componente rodada pode ser escrita como sendo a
soma da componente perpendicular original mais uma parcela correspondente direo
perpendicular a ela na direo v, dada por:

= p v (6.34)
Como um vetor unitrio e o seno deste produto vetorial vale 1, temos que o vetor v tem
a mesma norma que p

. A componente perpendicular rodada, p', tambm tem esta mesma
norma, da o crculo na Fig. 6.25 e a possibilidade de escrevermos:
v p p p ) ( ) (cos '
||
sen + + =

(6.35)
Resta agora escrevermos os vetores p
||
, p

e v nos dados do problema: , p e . A
componente paralela pode ser escrita como a projeo de p em :
p p ) (
||
= (6.36)
e a componente perpendicular pode ser tirada da diferena entre p e a componente paralela:
p p p ) ( =

(6.37)
Com isto v tambm pode ser re-escrito como:
Transformaes Geomtricas 26/43
Marcelo Gattass 4/10/2005
( ) p p p p p p v = = = =

) ( ) ( (6.38)
uma vez que a componente paralela no contribui no produto vetorial.
Substituindo as componente de p
||
, p

e v na equao (6.35) temos:
)) )( ( ) ) ( )( (cos ) ( ' p e e p e p e p e p + + = sen ` (6.39)
Re-arrumando os termos chegamos a:
) )( ( ) )( cos 1 ( ) (cos ' p p p p + + = sen (6.40)
Apesar de ser diretamente escrita em temos dos dados do problema, no podemos dizer que
esta equao seja prtica nem que a formulao seja elegante.
Uma maneira de se facilitar de uso o clculo da rotao em torno de um eixo qualquer
consiste em calcularmos a matriz da transformao correspondente. Para tanto, podemos
calcular cada coluna da matriz como a transformada dos vetores da base cannica. Sejam
p=(x,y,z)
T

e =(e
x
,e
y
,e
z
), a primeira coluna da matriz corresponde rotao do vetor ,
escrita como:
|
|
|

\
|

+
+
=
|
|
|

\
|

+
|
|
|

\
|
+
|
|
|

\
|
=
|
|
|

\
|




sin ) cos 1 (
sin ) cos 1 (
) cos 1 ( cos 0
sin ) cos 1 (
0
0
1
cos
2
22
21
11
y z x
z y x
x
y
z
z
y
x
x
e e e
e e e
e
e
e
e
e
e
e
m
m
m
(6.41a)
|
|
|

\
|

+

=
|
|
|

\
|
+
|
|
|

\
|
+
|
|
|

\
|
=
|
|
|

\
|




sin ) cos 1 (
) cos 1 ( cos
sin ) cos 1 (
0 sin ) cos 1 (
0
1
0
cos
2
32
22
12
x z y
y
z x y
x
z
z
y
x
y
e e e
e
e e e
e
e
e
e
e
e
m
m
m
(6.41b)
|
|
|

\
|
+

+
=
|
|
|

\
|
+
|
|
|

\
|
+
|
|
|

\
|
=
|
|
|

\
|
2
33
23
13
) cos 1 ( cos
sin ) cos 1 (
sin ) cos 1 (
0
sin ) cos 1 (
1
0
0
cos
z
x y z
y x z
x
y
z
y
x
z
e
e e e
e e e
e
e
e
e
e
e
m
m
m



(6.41c)
Montando a matriz de rotao temos:
|
|
|
|
|

\
|
(
(
(
(

=
|
|
|
|
|

\
|
1 1 0 0 0
0
0
0
'
'
'
33 32 31
23 22 21
13 12 11
z
y
x
m m m
m m m
m m m
w
z
y
x
(6.42)
onde:
(
(
(
(
(

+
+ +
+ +
=
1 0 0 0
0 ) cos 1 ( cos sin ) cos 1 ( sin ) cos 1 (
0 sin ) cos 1 ( ) cos 1 ( cos sin ) cos 1 (
0 sin ) cos 1 ( sin ) cos 1 ( ) cos 1 ( cos
2
2
2
z x z y y z x
x y z y z y x
y x z z x y x
e e e e e e e
e e e e e e e
e e e e e e e



M

Transformaes Geomtricas 27/43
Marcelo Gattass 4/10/2005
Caso o eixo no passe pela origem, teramos que compor transformaes. Supondo que o
eixo passe pelo ponto p
0
=(x
0
,y
0
,z
0
)
T

e tenha a direo e sentido de =(e
x
,e
y
,e
z
), como ilustra
a Fig. 6.26, a rotao final seria dada por:
|
|
|
|
|

\
|
(
(
(
(

(
(
(
(

(
(
(
(

=
|
|
|
|
|

\
|
1 1 0 0 0
1 0 0
0 1 0
0 0 1
1 0 0 0
0
0
0
1 0 0 0
1 0 0
0 1 0
0 0 1
'
'
'
0
0
0
33 32 31
23 22 21
13 12 11
0
0
0
z
y
x
z
y
x
m m m
m m m
m m m
z
y
x
w
z
y
x
(6.43)

x
y
z
|
|
|

\
|
=
z
y
x
e
e
e


x
y
z
|
|
|

\
|
=
z
y
x
e
e
e


p
0
p
0
x
y
z
|
|
|

\
|
=
z
y
x
e
e
e


p
0
M
x
y
z
|
|
|

\
|
=
z
y
x
e
e
e


p
0
(
(
(
(

=
1 0 0 0
1 0 0
0 1 0
0 0 1
0
0
0
z
y
x
T
(
(
(
(

1 0 0 0
1 0 0
0 1 0
0 0 1
0
0
0
1
z
y
x
T

Fig. 6.26 Rotao em torno de um eixo que no passa pela origem.

Estas solues matriciais so simples de serem implementadas num programa de
computador, mas tambm no resolvem o srio problema que surge quando desejamos, por
exemplo, criar animaes com rotaes 3D. Poderamos desenvolver um pouco mais a
cinemtica de corpos rgidos na procura de expresses algbricas que resolvessem o
problema ou poderamos tratar o problema com Quatrnios, com os quais a soluo fica
mais simples.


Quatrnios

Transformaes Geomtricas 28/43
Marcelo Gattass 4/10/2005
A procura por uma forma algbrica simples e elegante para representar as rotaes no
espao foi um problema que ocupou os matemticos desde Euler (1707 1783). Em
1843, Hamilton estendeu os nmeros complexos, inventando uma estrutura algbrica,
chamada quatrnios, para atender a esta demanda. Em 1985, Shoemake introduziu os
quatrnios na Computao Grfica e hoje eles formam a base das implementaes de
animaes computadorizadas que envolvem rotaes no espao.
Um quatrnio, q, definido por quatro componentes:
k j i q z y x s + + + = (6.44)
sendo o escalar s a componente real e o vetor v=(x, y, z) a componente imaginria (a
exemplo dos complexos). Adotamos o sublinhado como notao para distinguir um
quatrnio de um vetor.
Uma forma mais compacta de escrever um quatrnio :
( ) v q , s = (6.45)
As operaes adio de dois quatrnios e multiplicao de quatrnio por escalar
seguem o esperado de um vetor de quatro dimenses:
( ) ( ) ( )
2 1 2 1 2 2 1 1
2 1
, , , v v v v q q + + = + = + s s s s (6.46)
( ) ( ) v v q a as s a a , , = = (6.47)
O produto de dois quatrnios
( )( ) k j i k j i q q
2 2 2 2 1 1 1 1
2 1
z y x s z y x s + + + + + + = (6.48)
pode ser distribudo nas suas componentes resultando em:
kk kj ki k
jk jj ji j
ik ij ii i
k j i q q
2 1 2 1 2 1 2 1
2 1 2 1 2 1 2 1
2 1 2 1 2 1 2 1
2 1 2 1 2 1 2 1
2 1
z z y z x z s y
z y y y x y s y
z x y x x x s x
z s y s x s s s
+ + + +
+ + + +
+ + + +
+ + + =
(6.49)
A exemplo dos nmeros complexos e do produto vetorial, os produtos das unidades
imaginrias dos quatrnios (i,j,k) so definidos por:
j ik ki i kj jk k ji ij
kk jj ii
= = = = = =
= = =
, ,
1
(6.50)
Substituindo estas equaes em (6.49) chegamos a:
k j i
k j i k j i
q q
) ( ) ( ) (
) ( ) (
) (
2 1 2 1 2 1 2 1 2 1 2 1
1 1 1 2 2 2 2 1
2 1 2 1 2 1 2 1
2 1
x y y x z x x z y z z y
z y x s z y x s
z z y y x x s s
+ + +
+ + + + + +
+ + =
(6.51)
Escrevendo esta equao de forma vetorial, temos:
Transformaes Geomtricas 29/43
Marcelo Gattass 4/10/2005
) , (
2 1 1 2 2 1 2 1 2 1
2 1
v v v v v v q q + + = s s s s (6.52)
Assim como os nmeros complexos, o conjugado de um quatrnio obtido negativando a
componente imaginria, ou seja:
( ) ( ) v v q = = , ,
* *
s s (6.53)
A norma de um quatrnio tambm segue a regra das normas de nmeros complexos:
( )( )
2 2 2 2 2 *
, , ) ( z y x s s s s n + + + = + = = = v v v v q q q (6.54)
O produto interno de dois quatrnios segue uma regra semelhante ao R
4
:
2 1 2 1 2 1 2 1
2
1
z z y y x x s s + + + = q q (6.55)
Apesar do produto interno de dois quatrnios ser completamente diferente do que o produto
de dois quatrnios, a diferena em notao sutil: o produto interno tem um ponto . e o
outro no. Com o produto interno definido podemos calcular a norma euclidiana e
perceber que ambas as normas esto relacionadas por:
2
) ( q q = n (6.56)
Como uma conseqncia direta da definio de norma de um quatrnio, podemos calcular o
inverso de um quatrnio como sendo:
* 1
) (
1
q
q
q
n
=

(6.57)
Para comprovar basta multiplicar:
1
) (
) (
) (
1
* 1
= = =

q
q
q q
q
q q
n
n
n

Note que o nmero real 1 (um) pode ser escrito como o quatrnio (1, 0).
Uma vez definida a norma podemos tambm definir o quatrnio unitrio como sendo
aquele cuja norma 1. Dado um quatrnio qualquer q, podemos calcular o seu unitrio
por:
q
q
q
1
= (6.58)
Uma forma conveniente de escrever um quatrnio unitrio :
( ) v q sin , cos = (6.59)
No difcil ver que:
( )( ) 1 sin cos sin , cos sin , cos
2 2
= + = = v v v v q

Transformaes Geomtricas 30/43
Marcelo Gattass 4/10/2005
Quatrnios e rotaes

A relao de quatrnios com rotaes no espao pode ser obtida da seguinte maneira:
1. Dada uma rotao definida por um eixo e um ngulo , construmos o quatrnio
unitrio:
|
|

\
|
|

\
|
|

\
|
= q
2
sin ,
2
cos

(6.60a)
2. Dado um ponto qualquer p do R
3
, construmos o quatrnio:
( ) p p , 0 = (6.60b)
3. Calculamos o produto:
1
'

= q p q p (6.60c)
4. A parte real deste produto resulta em 0 e a parte imaginria corresponde ao vetor do
R
3
rodado. Ou seja, o ponto rodado p' dado por:
( ) ' , 0 ' p p = (6.60d)
Um detalhe a ser observado que, como o quatrnio que representa uma transformao
unitrio, o quatrnio inverso simplesmente o conjugado, isto :

* 1
q q =

(6.61)
Para provarmos que o procedimento acima funciona necessrio provar que a componente
imaginria de
( )
|
|

\
|
|

\
|

\
|
|
|

\
|
|

\
|
|

\
|
p
2
sin ,
2
cos , 0
2
sin ,
2
cos


resulta no mesmo vetor calculado pela equao (6.40). Esta prova extensa mas no
possui dificuldade e por isto deixada a cargo do leitor.
Com base na equao (6.60a) podemos elaborar uma pergunta importante: qual o quatrnio
corresponde rotao nula? A resposta pode ser obtida atribuindo-se zero para o ngulo de
rotao em torno de qualquer eixo. O quatrnio resultante
( ) ) 0 , 0 , 0 , 1 ( ) , 1 ( 0 , 1 = = = 0 q
Se aplicamos este quatrnio na frmula (6.60c) vemos que p'=p.
Finalmente, a questo a ser levantada : se a complexidade da formulao por quatrnios
igual ou maior que a equao (6.40), por que ela se tornou to utilizada na Computao
Grfica? A resposta porque ela torna mais tratveis os problemas de composio e
interpolao de rotaes.
Composio de rotaes

Transformaes Geomtricas 31/43
Marcelo Gattass 4/10/2005
Considere duas rotaes seguidas definidas pelos quatrnios
1
q

e
2
q

. No difcil mostrar
que a rotao combinada dada por:
1 2
q q (6.62)
Ou seja, temos facilmente o eixo e o ngulo da rotao que leva diretamente da posio
original ao final da segunda rotao.
Para provar esta propriedade, considere que a posio final de um vetor qualquer p pode ser
calculada como sendo:
1
2
1
1 1 2
) (

q q p q q (6.63a)
ou
1
1 2 1 2
) ( ) (

q q p q q (6.64b)
A expresso (6.63a) calcula o resultado da rotao representada por
2
q

aplicada posio
final de p depois de rodado pela rotao representada por
1
q

. A equao (6.64b) representa


o ponto p rodado do quatrnio
1 2
q q .
Para ilustrar esta propriedade considere o boneco da Fig. 6.23b submetido s duas rotaes

x
= -60
o
seguido de
y
= 90
o
. Escrevendo estas rotaes como quatrnios, temos:
( ) ( ) ) 0 , 0 , 1 ( , ) 0 , 0 , 1 )( 30 sin( ), 30 cos(
2
1
2
3
1
= =
o o
q
( ) ( ) ) 0 , 1 , 0 ( , ) 0 , 1 , 0 )( 45 sin( ), 45 cos(
2
1
2
1
2
= =
o o
q
Qual a rotao que colocaria o boneco diretamente deitado como mostra a Fig. 6.23b? A
resposta no intuitiva mas pode ser facilmente calculada por:
( )( ) ( ) ) , , ( , ) 0 , 0 , 1 ( , ) 0 , 1 , 0 ( ,
5
1
5
3
5
1
4
10
4
6
2
1
2
3
2
1
2
1
1 2
= = q q
Ou seja, a rotao desejada de
0
5 . 104 = em torno do eixo ) , , (
5
1
5
3
5
1
= . A Fig. 6.27
mostra o resultado desta rotao ao lado do resultado da composio da rotao
x
= -60
o

seguido de
y
= 90
o
.



Fig. 6.27 Composio de rotaes por quatrnios.

Transformaes Geomtricas 32/43
Marcelo Gattass 4/10/2005
Interpolao de rotaes

O problema de gerar quadros intermedirios entre duas posies rodadas de um objeto foi
ilustrado na Fig. 6.24, quando mostramos que a interpolao baseada em ngulos de Euler
apresenta movimentos indesejados.
Dados dois quatrnios
1
q

e
2
q

que representam a posio inicial e final, podemos


determinar uma posio intermediria simplesmente aplicando o quatrnio interpolado
[ ] 1 , 0 ), ( t t q

tal que
1
) ( q 0 q

= e
2
) 1 ( q q

= .
O quatrnio interpolado pode ser escrito como uma combinao linear
2 1
) ( q q q

b a t + = (6.65)
onde a e b so nmeros reais. O nico detalhe a considerar que os quatrnios que
representam rotaes so necessariamente unitrios, ou seja, pertencem a uma hiperesfera
do espao de quatro dimenses. Quando interpolamos entre vetores de uma esfera no
podemos simplesmente adotar
[ ] 1 , 0 , 1 = a a b
Isto implicaria na interpolao ilustrada na Fig. 6.28a, que no preserva a norma unitria e
no linear nos ngulos. Para atender a estas condies devemos calcular a e b impondo:
1 ) ( = t q

(unitrio), (6.66a)
) cos( ) (
2
t t = q q

(interpolao baseada em ngulo), (6.66b)
cos
2 1
= q q

(ngulo entre os quatrnios) (6.66c)
Estas condies aplicadas equao (6.65) resultam na interpolao esfrica denominada
SLERP (Spherical Linear Interpolation), dada por:
( )
( ) ( )
) sin(
) sin(

) sin(
1 sin
, , ) (
2 1 2 1

t t
t Slerp t q q q q q +

= =
(6.67)
O ngulo pode ser calculado pelo produto interno dos quatrnios (6.55). A Fig. 6.28
ilustra esta interpolao.
1
q

2
q

2 1
) 1 ( ) ( q q q

a a t + =
] 1 , 0 [ a

(a) Linear: inadequada

(
1
-
t
)

1
q

2
q

) (t q


(b) esfrica: correta
Fig. 6.28 Interpolao de quatrnios.
Transformaes Geomtricas 33/43
Marcelo Gattass 4/10/2005
Para ilustrar esta proposta considere o problema ilustrado na Fig. 6.24. Os quatrnios que
representam as rotaes (0,0,90) e (0,90,0) so dados por:
( ) ( ) ) 1 , 0 , 0 ( , ) 1 , 0 , 0 )( 45 sin( ), 45 cos(
2
1
2
1
1
= =
o o
q
( ) ( ) ) 0 , 1 , 0 ( , ) 0 , 1 , 0 )( 45 sin( ), 45 cos(
2
1
2
1
2
= =
o o
q
O produto interno deles resulta em:
( )( )
2
1
2
1
2
1
2
1
2
1
2 1
) 0 , , 0 ( , ) , 0 , 0 ( , = = q q
indicando um ngulo de 60 no R
4
.
Para acharmos a posio intermediria correspondente a t=0.5, avaliamos a equao (6.67)
e chegamos a:
( )
( ) ( ) ) 0 , , 0 ( , ) , 0 , 0 ( ,
) 60 sin(
) 30 sin(

) 60 sin(
30 sin
) 5 . 0 (
2
1
2
1
3
1
2
1
2
1
3
1
2 1
+ = + = q q q
ou
( ) ( ) ( ) ) , , 0 ( 3 . 35 sin , 3 . 35 cos ) , , 0 ( , ) , , 0 ( , ) 5 . 0 (
2
1
2
1
0 0
2
1
2
1
6
2
6
2
6
1
6
1
6
2
= = = q
A Fig. 6.29 re-visita o problema de interpolao de posies rodadas ilustrado na Fig. 6.24.
Ela ilustra uma animao na qual trs quadros so gerados entre a posio inicial do boneco
rodada de 90 em torno do eixo vertical (eixo z) e a posio na qual ele est rodado de 90
em torno do eixo da direita (eixo y). Na coluna da esquerda a interpolao se faz com as
rotaes parametrizadas por ngulos de Euler seguindo a ordem xyz. Na coluna central as
rotaes tambm esto interpoladas por Euler mas seguem uma ordem especifica para este
caso na qual a rotao em torno do eixo z ocorre antes da rotao em torno do eixo y. Na
coluna da direita as rotaes so interpoladas seguindo o procedimento SLERP descrito
acima.
A interpolao de Euler seguindo a ordem xyz no apresentou bons resultados, como j
havamos ilustrado na Fig.6.24. A inverso de ordem fez com que o boneco casse sem que
seu eixo sasse do plano vertical. Esta seria a melhor soluo se no fosse particular para
este problema. Se adotarmos a ordem zyx e interpolarmos entre uma posio do boneco
rodada em y at outra rodada em z, teremos o mesmo problema da coluna da esquerda. Ou
seja, a ordem seria dependente do problema. Como a ordem tem que ser estabelecida a
priori, esta parametrizao no tem a generalidade necessria.
A interpolao segundo os quatrnios segue a rotao que resulta do teorema de Euler. Ou
seja, a interpolao SLERP se faz em torno de um eixo fixo que exatamente o eixo da
rotao que leva da posio inicial para a final. Podemos determinar este eixo
algebricamente utilizando quatrnios atravs da expresso:
2 1
q q q =
rot

Transformaes Geomtricas 34/43
Marcelo Gattass 4/10/2005





(a) Euler

(b) ajustando a ordem

(c) quatrnios
Fig. 6.29 - Quadros interpolados segundo Euler e quatrnios.
Multiplicando esta expresso direita pelo inverso de
1
q temos:
*
1 2
1
1 2
q q q q q = =

rot

Transformaes Geomtricas 35/43
Marcelo Gattass 4/10/2005
Substituindo os valores calculados acima:
( )( ) ) , 0 , 0 ( , ) 0 , , 0 ( ,
2
1
2
1
2
1
2
1
*
1 2
= = q q q
rot

ou:
( ) ( ) ( ) ( ) ) , , ( sin , cos ) , , ( ,
3
1
3
1
3
1
2
120
2
120
3
1
3
1
3
1
2
3
2
1
0 0
= =
rot
q
De onde podemos concluir que a rotao de 120 em torno de um eixo (-1,1,-1) leva da
posio inicial at a final. O que a interpolao SLERP faz aplicar uma rotao de 120t, t
variando de 0 a 1, em torno deste eixo. O que torna esta interpolao interessante o fato
de que ela nica o que torna o procedimento algbrico previsvel geometricamente.
A hiperesfera do R
4
que contm os quatrnios que representam rotaes no R
3
possui uma
particularidade importante: uma mesma rotao pode ser representada por q

ou por q

.
Isto porque os produtos
1


q p q e ) ( ) (
1
q p q resultam no mesmo vetor. Ou seja, existe
uma certa redundncia de quatrnios. O problema que temos que enfrentar que a
interpolao entre, por exemplo,
1
q

e
2
q

no produz os mesmo quatrnios intermedirios


que a interpolao entre
1
q

e
2
q

. Como ao interpolar queremos o menor movimento


possvel, temos que escolher o sinal de
1
q

ou
2
q

de forma a minimizar o ngulo entre eles.



Quatrnios e matrizes

Apesar dos quatrnios serem necessrios para as interpolaes, as rotaes, em sistemas
grficos do tipo do OpenGL
TM
, so normalmente especificadas por matrizes e no por
equaes do tipo (6.60). Alm disto, normalmente as operaes com matrizes so feitas na
placa grfica, aliviando o processador central. Por razes como esta, temos que transformar
rotaes especificadas por quatrnios em rotaes especificadas por matrizes e vice-versa.
Dada uma rotao especificada por um quatrnio ) , , , ( z y x s = q , a matriz pode ser derivada
atravs do produto
1


q p q , resultando em:

(
(
(
(
(

+ +
+ +
+ +
=
1 0 0 0
0 ) ( 2 1 2 2 2 2
0 2 2 ) ( 2 1 2 2
0 2 2 2 2 ) ( 2 1
2 2
2 2
2 2

y x xs yz ys xz
xs yz z x zs xy
ys xz zs xy z y
q
M (6.68)
Inversamente, dada uma matriz de rotao qualquer da forma
(
(
(
(

1 0 0 0
0
0
0
33 32 31
23 22 21
13 12 11
m m m
m m m
m m m

Transformaes Geomtricas 36/43
Marcelo Gattass 4/10/2005
podemos calcular o escalar w do quatrnio associado observando que a soma da diagonal
(tambm chamada de trao da matriz) dada por:
44 33 22 11
2 2 2
1 ) 2 2 2 ( 2 4 m m m m z y x + + + + = + +
Como o quatrnio de rotao unitrio temos x
2
+y
2
+z
2
=1-s
2
e:
44 33 22 11
2
1 ) 1 ( 4 4 m m m m s + + + + =
ou seja:
44 33 22 11 2
1
1 m m m m s + + + + = (6.69a)
de maneira similar temos:
s
m m
x
4
23 32

= (6.69b)
s
m m
y
4
31 13

= (6.69c)
s
m m
z
4
12 21

= (6.69d)
Transformao de Pontos e Normais

Quando um conjunto de objetos sofre uma determinada transformao, calculamos a matriz
desta transformao e a aplicamos a todos os vrtices do modelo. Assim, ao
transformarmos os pontos das extremidades de um segmento de reta, estamos de fato
transformando todos os pontos do segmento. O mesmo acontece com outras entidades
geomtricas, como tringulos e quadrilteros. Todos utilizam a mesma matriz. As normais
destes objetos, entretanto, no seguem a mesma transformao. Para exemplificar o
problema considere a Fig. 6.30.
x
y
s
x
=0.5
x
y
s
x
=0.5
x
y
x
y
x
y

Fig. 6.30 As normais no sofrem a mesma transformao que os pontos.

Para computar a transformao da normal, considere a equao do plano np=0 escrita na
forma:
Transformaes Geomtricas 37/43
Marcelo Gattass 4/10/2005

0
1
=
(
(
(
(

=
z
y
x
d c b a
T
p n (6.70)
Esta equao no se altera se inclumos a matriz identidade na forma de uma matriz M e da
sua inversa:

0
1
1
=
(
(
(
(

z
y
x
d c b a M M (6.71)
Se M a matriz da transformao homognea da transformada que estamos tratando, os
pontos p so levados para:
Mp p = ' ou
(
(
(
(

=
(
(
(
(

1 '
'
'
'
z
y
x
w
z
y
x
M (6.72)
Substituindo esta equao na equao (6.71) temos:


0
'
'
'
'
1
=
(
(
(
(

w
z
y
x
d c b a M (6.73)
Esta equao pode ser vista com a equao do plano transformada, n' p' = 0, se:
n M n
T
= ' ou
(
(
(
(

=
(
(
(
(

d
c
b
a
d
c
b
a
T
M
'
'
'
'
(6.74)
De onde conclumos que, se M transforma os pontos, M
-T
transforma as normais. Note que
se a matriz M for ortonormal as duas matrizes so iguais.
Exerccios resolvidos

1. Calcule a inversa da matriz, M, mostrada abaixo. O resultado era esperado? Qual a
interpretao geomtrica da transformao associada a esta matriz?

Transformaes Geomtricas 38/43
Marcelo Gattass 4/10/2005
(
(
(
(

=
2
3
0
2
1
0 1 0
2
1
0
2
3
M
Resposta:
Pela regra de Cramer a inversa de um matriz pode ser calculada por:
adj
M
M
M
) det(
1
1
=


1 ) 0 0 1 ( 0 0 1 ) det(
2
1
2
1
2
3
2
3
= + + + + = M
(
(
(
(


=
2
3
0
2
1
0 1 0
2
1
0
2
3
adj
M

(
(
(
(

2
3
0
2
1
0 1 0
2
1
0
2
3
1
M

Examinando as colunas da matriz M vemos que a transformada da base cannica
consiste numa rotao de 30
o
em torno do eixo y, como ilustra a figura abaixo.
30
o
30
o
k
i
i'
j=j'
k'
x
y
z
30
o
30
o
k
i
i'
j=j'
k'
x
y
z
i' i' i' i' k' k'
(
(
(
(

=
2
3
0
2
1
0 1 0
2
1
0
2
3
M

Como a matriz de rotao ortonormal, a inversa a transposta. Ou, continuando o
raciocnio geomtrico, a inversa corresponde rotao de -30
o
que resulta na
mesma matriz, como ilustra a figura a seguir.
30
o
30
o
k
i
i'
j=j'
k'
x
y
z
30
o
30
o
k
i
i'
j=j'
k'
x
y
z
(
(
(
(

2
3
0
2
1
0 1 0
2
1
0
2
3
1
M

Em ambos caminhos chegamos mesma resposta.

2. Mostre que a matriz, R, associada a uma rotao em torno de um eixo qualquer que
passa pela origem ortonormal, ou seja, R
T
R = RR
T
= I ou R
-1
= R
T
.
Transformaes Geomtricas 39/43
Marcelo Gattass 4/10/2005
Dica: qual a interpretao geomtrica das colunas da matriz R?

Resp.:

Se aplicarmos uma transformao M ao sistema cannico i, j, k obtemos o seguinte
resultado:
|
|
|

\
|
=
|
|
|

\
|
(
(
(

= =
c
b
a
i f c
h e b
g d a
0
0
1
' Mi i
,
|
|
|

\
|
=
|
|
|

\
|
(
(
(

= =
f
e
d
i f c
h e b
g d a
0
1
0
' Mj j
e
|
|
|

\
|
=
|
|
|

\
|
(
(
(

= =
i
h
g
i f c
h e b
g d a
1
0
0
' Mk k

Pela equao (6.8) podemos escrever a matriz M como sendo:
(
(
(




=
k k j j k i
k k j j j i
i k i j i i
M
' ' '
' ' '
' ' '

Podemos notar que as colunas da matriz correspondem aos vetores da base rodada
escrita na base original e as linhas so vice-versa. Ou seja:
(
(
(

=
(
(
(

|
|
|

\
|
|
|
|

\
|
|
|
|

\
|
=
(
(
(




=
k
j
i
k j i
k k j j k i
k k j j j i
i k i j i i
M ' ' '
' ' '
' ' '
' ' '

A interpretao da matriz transposta tambm imediata:
(
(
(

=
(
(
(

|
|
|

\
|
|
|
|

\
|
|
|
|

\
|
=
'
'
'
k
j
i
k j i M
T

O produto da matriz pela sua transposta pode ser interpretado como sendo o produto
interno entre os vetores da base cannica original:
I
k k j j k i
k k j j j i
i k i j i i
MM =
(
(
(

=
(
(
(




=
1 0 0
0 1 0
0 0 1



T

O produto da transposta pela matriz contm os produtos internos dos vetores da
base rodada:
I
k k j j k i
k k j j j i
i k i j i i
M M =
(
(
(

=
(
(
(




=
1 0 0
0 1 0
0 0 1
' ' ' ' ' '
' ' ' ' ' '
' ' ' ' ' '
T

Em ambos os casos, como as bases so ortonormais, os produtos resultam na matriz
identidade, como queramos provar.
Transformaes Geomtricas 40/43
Marcelo Gattass 4/10/2005
3. Um objeto que est numa posio A sofre uma rotao em torno do eixo y de 90
o

chegando a uma posio B. A partir de B o objeto sobre outra rotao de 90
o
em
torno do eixo x chegando a uma posio C. Determine o eixo de uma rotao que o
leve diretamente de A para C.
Resp.:
Quatrnio correspondente primeira rotao:
|
|

\
|
=
|
|

\
|
|

\
|
|

\
|
= ) 0 , 1 , 0 (
2
2
,
2
2
2
sin ,
2
cos
1
q


Quatrnio correspondente segunda rotao:
|
|

\
|
=
|
|

\
|
|

\
|
|

\
|
= ) 0 , 0 , 1 (
2
2
,
2
2
2
sin ,
2
cos
2
q


Quatrnio correspondente rotao de A para C:
|
|

\
|
|
|

\
|
= = ) 0 , 1 , 0 (
2
2
,
2
2
) 0 , 0 , 1 (
2
2
,
2
2

1 2 3
q q q
( )
|

\
|
=
|
|

\
|
+ + = 1 , 1 , 1
2
1
,
2
1
) 1 , 0 , 0 (
2
2
2
2
) 0 , 0 , 1 (
2
2
2
2
) 0 , 1 , 0 (
2
2
2
2
, 0
2
2
2
2

3
q
|
|

\
|
|

\
|
=
|
|

\
|
|

\
|
=
3
1
,
3
1
,
3
1
2
120
sin ,
2
120
cos
3
1
,
3
1
,
3
1
2
3
,
2
1

3
o o
q

Ou seja o eixo de rotao pedido : |

\
|
3
1
,
3
1
,
3
1

Exerccios
1) A que pontos do R
2
correspondem as seguintes coordenadas homogneas?
(
(
(

=
3
3
12
1
p

(
(
(

=
3
2
2
8
2
p

(
(
(

=
0
0
12
3
p

2) Determine a matriz que transforma os pontos do plano R
2
de forma que os objetos
rodem em torno do ponto (2,3)
T
de um ngulo de 90
o
graus.
3) Determine o centro, o sentido e o ngulo de rotao da transformao geomtrica
representada pela matriz M mostrada abaixo.
Transformaes Geomtricas 41/43
Marcelo Gattass 4/10/2005
(
(
(


=
1 0 0
1 0 1
5 1 0
M

4) Determine a matriz que transforma os pontos do plano R
2
de forma que as retas
tracejadas fiquem ortogonais reta que passa por ab na forma indicada nos desenhos
abaixo. Note que a reta que passa por ab deve permanecer com sua posio inalterada.
(A resposta deve ser dada na forma de uma multiplicao de matrizes explicitamente
definidas)
b
a
b
a
a = (0,1)
T
x
y y
x
60
o
45
o
45
o
b
a
b
a
a = (0,1)
T
x
y y
x
60
o
45
o
45
o


5) Determine um produto de matrizes cuja matriz resultante transforme o tringulo abc em
a'b'c' respeitando as condies geomtricas indicadas na figura abaixo.
a
a'
b
b'
c'
c
d
x
y y
x
d'
|| ad' || = || ad ||
45
o
a
a'
b
b'
c'
c
d
x
y y
x
d'
|| ad' || = || ad ||
45
o

6) Determine a matriz que escala o objeto mostrado na figura de s
x

= 2 e s
y
= 3 em torno
do ponto (-1, 3)
T
. Qual o significado geomtrico das colunas desta matriz? Em que
espao essas colunas tm este significado?
Transformaes Geomtricas 42/43
Marcelo Gattass 4/10/2005
+


7) Determine um produto de matrizes homogneas que represente a seqncia de
transformaes geomtricas que transforma a window da figura da esquerda na viewport
da figura da direita. Este produto nico? E a matriz resultante, nica?
(-1, -1)
(1, 1)
x
y
x
y
1 11
1
6
window
viewport

8) Nos sistemas grficos no plano, as transformaes entre sistemas de coordenadas so
geralmente feitas atravs do par window, viewport. Como pode-se refazer um desenho
aumentando seu tamanho na superfcie de visualizao (zoom +)? (Marque certo ou
errado aps cada frase.)
aumentando a window;
diminuindo a viewport;
diminuindo a window;
aumentando a window e diminuindo a viewport de um mesmo fator;
aumentando a window e aumentando a viewport de um mesmo fator.

9) Determine o produto de matrizes homogneas que transforma o quadrado unitrio da
forma indicada na figura. A resposta pode ser dada na forma de um produto de matrizes
(no necessrio fazer as contas).
Transformaes Geomtricas 43/43
Marcelo Gattass 4/10/2005
1
1
x
y
(dx,dy)


10) Determine a matriz que transforma os pontos do plano R
2
de forma que os objetos
rodem em torno do ponto (3,2)
T
de um ngulo de 90
o
graus no sentido horrio. Qual o
significado geomtrico das colunas desta matriz? Faa um desenho ilustrando este
significado geomtrico.
11) Determine o quatrnio que representa uma rotao de 30
o
em torno do eixo y.
12) Determine a matriz correspondente ao quatrnio do exerccio anterior utilizando a
equao (6.68).
13) Calcule posio do ponto p = (1,2,2) aps uma a rotao de 60
o
em torno do eixo que
passa pela origem e tem a direo do vetor (1,1,1) utilizando trs formulaes
diferentes. So elas: (a) matriz de rotao dada pela equao (6.42); (b) expresso
vetorial dada pela equao (6.40); e (c) pelo procedimento de quatrnios (veja (6.60)).
14) A Fig. 6.22 mostra trs fotos de uma coruja em trs posies diferentes. A foto da
esquerda mostra a coruja rodada de -90
o
em z. A foto da direita mostra a coruja rodada
de 90
o
em x. Finalmente, a foto do meio mostra a coruja rodada de aproximadamente
45
o
em x e -45
o
em z. Esta posio intermediria corresponde interpolao dos
ngulos de Euler. Calcule o ngulo e o eixo de rotao de uma posio intermediria
atravs da interpolao linear esfrica de quatrnios.

Вам также может понравиться