You are on page 1of 67

1

Instituto de Computao - UFF


Computao Grfica I
Computao Grfica I
Professor:

Anselmo Montenegro
www.ic.uff.br/~anselmo

Contedo:
- Transformaes geomtricas no espao
2
Instituto de Computao - UFF

As transformaes geomtricas so operaes


As transformaes geomtricas so operaes
fundamentais para a modelagem, visualizao
fundamentais para a modelagem, visualizao
e interao com objetos grficos 3D.
e interao com objetos grficos 3D.

Descreveremos os seguintes tpicos:


Descreveremos os seguintes tpicos:

Escalas, rotaes e translaes no espao. Escalas, rotaes e translaes no espao.

Esquemas para Esquemas para representao de orientaes representao de orientaes. .

Composio de transformaes Composio de transformaes: :

Instanciao de objetos. Instanciao de objetos.

Hierarquia. Hierarquia.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Introduo
Introduo
3
Instituto de Computao - UFF

Transformaes de escala, rotao e


Transformaes de escala, rotao e
translao so fundamentais para a
translao so fundamentais para a
criao
criao
de cenas compostas por diversos objetos
de cenas compostas por diversos objetos
.
.

As matrizes de
As matrizes de
translao
translao
e
e
escala
escala
so de
so de
fato uma simples extenso das matrizes de
fato uma simples extenso das matrizes de
transformao definidas no plano.
transformao definidas no plano.
Transformaes geomtricas espao
Transformaes geomtricas espao
:
:
Introduo
Introduo
4
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Translaes e escalas
Translaes e escalas
x
y
z
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

1 1 0 0 0
1 0 0
0 1 0
0 0 1
1
z
y
x
t
t
t
z
y
x
z
y
x
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

1 1 0 0 0
0 0 0
0 0 0
0 0 0
1
z
y
x
s
s
s
z
y
x
z
y
x
Translao Translao
Escala Escala
5
Instituto de Computao - UFF

As operaes de rotao no espao so mais As operaes de rotao no espao so mais


complexas do que no plano. complexas do que no plano.

Uma extenso natural definirmos a rotao de Uma extenso natural definirmos a rotao de
um objeto a partir da um objeto a partir da rotao em torno dos eixos rotao em torno dos eixos
cartesianos cartesianos. .
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Rotaes
Rotaes
x x
y y
z z

x x

y y

z z
6
Instituto de Computao - UFF

Podemos facilmente definir as matrizes


Podemos facilmente definir as matrizes
de rotao em cada eixo.
de rotao em cada eixo.

As
As
colunas
colunas
de uma matriz de rotao em
de uma matriz de rotao em
torno de um certo eixo cartesiano so
torno de um certo eixo cartesiano so
dados pela
dados pela
transformao dos vetores da
transformao dos vetores da
base cannica
base cannica
.
.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Rotaes
Rotaes
7
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Rotaes no eixo z
Rotaes no eixo z
1
1
1
]
1

1
1
1
]
1

1
1
1
]
1

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


x
y
z
'

i
'

j
'

z
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

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


1
1
1
]
1


1
0
0

k
1
1
1
]
1


0
sin
cos

z
z
i

1
1
1
]
1


0
cos
sin

z
z
j

x
y
k k


z
8
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Rotaes no eixo x
Rotaes no eixo x
x
y
z

x
'

i
'

j
'

k
1
1
1
]
1


x
x
j

sin
cos
0

1
1
1
]
1


0
0
1

i
1
1
1
]
1


x
x
k

cos
sin
0

1
1
1
]
1

1
1
1
]
1


1
1
1
]
1

z
y
x
z
y
x
x x
x x


cos sin 0
sin cos 0
0 0 1
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

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


x
j

y
z
i i


x
9
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Rotaes no eixo y
Rotaes no eixo y
y
z
'

i
'

j
'

y
x
'

k
'

i
k

z
x
'

j j

y
1
1
1
]
1


y
i
y

sin
0
cos
1
1
1
]
1


0
1
0

j
1
1
1
]
1


y
k
y

cos
1
sin

1
1
1
]
1

1
1
1
]
1

1
1
1
]
1

z
y
x
z
y
x
y y
y y


cos 0 sin
0 1 0
sin 0 cos
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

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


x
10
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Rotaes nos eixos cartesianos
Rotaes nos eixos cartesianos
x
y
z

x

z
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

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


1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

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


1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

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


11
Instituto de Computao - UFF

Em geral, uma Em geral, uma matriz de transformao em matriz de transformao em


coordenadas homogneas coordenadas homogneas tem a seguinte estrutura: tem a seguinte estrutura:

Se a matriz Se a matriz M M e o vetor e o vetor s s tem dimenses 2x2 e 1x2, tem dimenses 2x2 e 1x2,
respectivamente, ento a transformao ocorre no respectivamente, ento a transformao ocorre no
plano homogneo plano homogneo. .

Se as dimenses forem 3x3 e 3x1, respectivamente, Se as dimenses forem 3x3 e 3x1, respectivamente,
ento a transformao ocorre no ento a transformao ocorre no espao homogneo espao homogneo. .
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
matrizes de transformao
matrizes de transformao
1
]
1

1 s
T M
12
Instituto de Computao - UFF

A forma matricial homognea pode


A forma matricial homognea pode
representar
representar
a) a) Transformaes lineares. Transformaes lineares.
b) b) Translaes Translaes
c) c) Transformaes afins. Transformaes afins.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
matrizes de transformao
matrizes de transformao
1
]
1

1 0
0 M
1
]
1

1 0
T I
1
]
1

1 0
T M
(a) (a) (b) (b) (c) (c)
13
Instituto de Computao - UFF

A matriz que representa uma


A matriz que representa uma
transformao
transformao
afim
afim
representa uma
representa uma
transformao linear
transformao linear
seguida de uma translao
seguida de uma translao
:
:

Caso invertssemos a ordem teramos


Caso invertssemos a ordem teramos

Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
matrizes de transformao
matrizes de transformao
1
]
1

1
]
1

1
]
1

1 0 1 0
0
1 0
T M M T I
1
]
1

1
]
1

1
]
1

1 0 1 0 1 0
0 MT M T I M
14
Instituto de Computao - UFF

Como podemos ver, a Como podemos ver, a ordem influi no resultado ordem influi no resultado. .

Na segunda ordem, a translao no pode ser lida Na segunda ordem, a translao no pode ser lida
diretamente da ltima coluna ltima matriz,. diretamente da ltima coluna ltima matriz,.

Como a ltima linha o vetor Como a ltima linha o vetor [0..0 1] [0..0 1] ento ento estas estas
matrizes mantm os pontos no plano matrizes mantm os pontos no plano w = 1 w = 1. .

Nas Nas transformaes projetivas transformaes projetivas, que sero vistas mais , que sero vistas mais
tarde, a ltima linha assume outros valores e os tarde, a ltima linha assume outros valores e os
pontos podem ser deslocados do plano pontos podem ser deslocados do plano w=1 w=1. .
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
matrizes de transformao
matrizes de transformao
15
Instituto de Computao - UFF

Podemos imaginar que a


Podemos imaginar que a
orientao
orientao
de
de
um objeto no espao pode ser
um objeto no espao pode ser
especificada atravs da
especificada atravs da
composio de
composio de
trs rotaes em torno dos eixos
trs rotaes em torno dos eixos
cartesianos
cartesianos
.
.

Esta forma de especificao requer


Esta forma de especificao requer
alguns cuidados j que
alguns cuidados j que
rotaes no
rotaes no
comutam
comutam
.
.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
rotaes e orientaes
rotaes e orientaes
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
16
Instituto de Computao - UFF

J que as J que as rotaes no comutam rotaes no comutam devemos adotar devemos adotar
uma ordem especfica uma ordem especfica. .

Esta forma de representar orientaes denominada Esta forma de representar orientaes denominada
ngulos de Euler ngulos de Euler. .

Na literatura de aeronutica estas rotaes so Na literatura de aeronutica estas rotaes so


chamadas de chamadas de

Roll Roll giro em torno do eixo longitudinal giro em torno do eixo longitudinal

Pitch Pitch ngulo de ataque. ngulo de ataque.

Yaw Yaw giro em torno do eixo vertical. giro em torno do eixo vertical.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
ngulos de Euler
ngulos de Euler
17
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
ngulos de Euler
ngulos de Euler
1
1
1
1
]
1

+
+

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

x x
y
z

y
x
y
z

z
x
y
z
s s
x x
= sin( = sin(
x x
), s ), s
y y
= sin( = sin(
y y
), s ), s
z z
= sin( = sin(
z z
) )
c c
x x
= cos( = cos(
x x
), c ), c
y y
= cos( = cos(
y y
), c ), c
z z
= cos( = cos(
z z
) )
18
Instituto de Computao - UFF

Problemas:
Problemas:

Gimbal lock
Gimbal lock
: perda de graus de
: perda de graus de
liberdade em certas configuraes.
liberdade em certas configuraes.

No so parmetros adequados para


No so parmetros adequados para
interpolaes.
interpolaes.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
ngulos de Euler
ngulos de Euler
19
Instituto de Computao - UFF
Animador deseja rodar o boneco de lado ( Animador deseja rodar o boneco de lado (
x x
= 30 = 30 ) graus, inclin- ) graus, inclin-
lo para frente ( lo para frente (
y y
= 90 = 90 ) e levantar seu brao esquerdo. ) e levantar seu brao esquerdo.

A ltima operao no ser possvel. A ltima operao no ser possvel.


Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
ngulos de Euler Gimbal Lock
ngulos de Euler Gimbal Lock

x x
=30 =30

x x
=30 =30

y y
=90 =90

x x
=30 =30

y y
=90 =90

z z
=60 =60
original original
z z
y y
x x
20
Instituto de Computao - UFF

Mesmo resultado obtido apenas com rotaes


Mesmo resultado obtido apenas com rotaes
no eixo x e y.
no eixo x e y.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
ngulos de Euler Gimbal Lock
ngulos de Euler Gimbal Lock

x x
=-60 =-60
x x
=-60 =-60

y y
=90 =90
original original
21
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
ngulos de Euler
ngulos de Euler
1
1
1
1
]
1

+
+

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
1
1
1
1
]
1

1 0 0 0
0 0 ) sin( ) cos(
0 0 ) cos( ) sin(
0 1 0 0
z x z x
z x z x


1
1
1
1
]
1

+
+

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
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
Apesar de especificarmos 2 parmetros s Apesar de especificarmos 2 parmetros s
temos 1 grau de liberdade temos 1 grau de liberdade
22
Instituto de Computao - UFF

Interpolao entre Interpolao entre


as orientaes as orientaes
(0,90,0) e (0,90,0). (0,90,0) e (0,90,0).

Note que em uma Note que em uma


interpolao mais interpolao mais
natural a cabea natural a cabea
no sairia tanto do no sairia tanto do
plano plano xz xz. .
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
ngulos de Euler interpolao
ngulos de Euler interpolao
23
Instituto de Computao - UFF

Rotaes em torno de um eixo: Rotaes em torno de um eixo:

Euler provou em 1775 que dadas duas posies Euler provou em 1775 que dadas duas posies
rotacionadas de um objeto, sempre possvel levar uma rotacionadas de um objeto, sempre possvel levar uma
posio a outra atravs de uma posio a outra atravs de uma rotao de um ngulo rotao de um ngulo
em torno de um eixo em torno de um eixo. .

Esta rotao tem a mesmo comportamento que a Esta rotao tem a mesmo comportamento que a
interpolao de duas posies atravs de um segmento interpolao de duas posies atravs de um segmento
de reta que os une. de reta que os une.

Sai da primeira posio indo para a segunda sem Sai da primeira posio indo para a segunda sem
oscilaes. oscilaes.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
outras formas de se expecificar orientaes
outras formas de se expecificar orientaes
24
Instituto de Computao - UFF
e

p

p
||
p
v
p

x
y
z

p e v
) ( ) (
||
+ p p p p R R
) ( ) (
||
+ p p p R R
v p p p ) ( ) (cos
||
sen + +

p
p
' p
v
) )( ( ) ) ( )( (cos ) ( p e e p e p e p e p + + sen

Transformaes geomtricas no espao


Transformaes geomtricas no espao
:
:
rotao em torno de um eixo
rotao em torno de um eixo
25
Instituto de Computao - UFF
e

p

p
||
p
v
p

x
y
z

p e v

p
p
' p
v

) )( ( ) )( (cos ) (cos ) ( p p p p p + + sen


) )( ( ) )( cos 1 ( ) (cos p p p p + +

sen
) )( ( ) ) ( )( (cos ) ( p e e p e p e p e p + + sen
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
rotao em torno de um eixo
rotao em torno de um eixo
26
Instituto de Computao - UFF

,
_


+
+

,
_

,
_

,
_

,
_





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

,
_

,
_

,
_

,
_

,
_





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

,
_

+

+

,
_

,
_

,
_

,
_

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



,
_

1
1
1
1
]
1

,
_

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
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
rotao em torno de um eixo
rotao em torno de um eixo
27
Instituto de Computao - UFF
1
1
1
1
1
]
1

+
+ +
+ +

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

,
_

1
1
1
1
]
1

,
_

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
x
y
z

,
_

z
y
x
e
e
e

Transformaes geomtricas no espao


Transformaes geomtricas no espao
:
:
rotao em torno de um eixo
rotao em torno de um eixo
28
Instituto de Computao - UFF
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
1
1
1
]
1

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

1 0 0 0
1 0 0
0 1 0
0 0 1
0
0
0
1
z
y
x
T
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
rotao em torno de um eixo fora da origem
rotao em torno de um eixo fora da origem
29
Instituto de Computao - UFF

A especificao de orientaes atravs de rotaes A especificao de orientaes atravs de rotaes


em torno de um eixo em torno de um eixo no fornece uma lgebra simples no fornece uma lgebra simples
para as diversas operaes necessrias para para as diversas operaes necessrias para
animao. animao.

Para isso existe uma estrutura matemtica mais Para isso existe uma estrutura matemtica mais
adequada denominada adequada denominada quatrnios quatrnios. .

No sculo 18, W. R. Hamilton props os No sculo 18, W. R. Hamilton props os quatrnios quatrnios
como uma extenso como uma extenso em quatro dimenses para os em quatro dimenses para os
nmeros complexos. nmeros complexos.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
quaternios
quaternios
30
Instituto de Computao - UFF

Quatrnios Quatrnios podem representar rotaes e orientaes podem representar rotaes e orientaes
no espao tridimensional. no espao tridimensional.

Existem diferentes notaes para Existem diferentes notaes para quatrnios quatrnios

Uma possvel forma represent-los conforme abaixo: Uma possvel forma represent-los conforme abaixo:
q q = (q = (q
v v
,q ,q
w w
) = iq ) = iq
x x
+jq +jq
y y
+kq +kq
z z
+q +q
w w
= q = q
v v
+q +q
w w
q q
v v
= iq = iq
x x
+jq +jq
y y
+kq +kq
z z
=(q =(q
x x
,q ,q
y y
,q ,q
z z
) )

i i
2 2
= j = j
2 2
= k = k
2 2
= -1 and ij = -ji= k, jk = -kj = i, ki = -ik = -j = -1 and ij = -ji= k, jk = -kj = i, ki = -ik = -j
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
quaternios
quaternios
31
Instituto de Computao - UFF
Adio: q + r = (q
v
,q
w
)+(r
v
,r
w
)
Multiplicao: qr = (q
v
x r
v
+r
w
q
v
+q
w
r
v
, q
w
r
w
q
v
.r
v
), onde . indica produto
escalar e x produto vetorial); Obs.: qr rq
Conjugado: q* = (q
v
,q
w
)* = (-q
v
,q
w
)

Norma: n(q) = qq* = q*q = q


v
. q
v
+ q
w
2
= qx
2
+ qy
2
+ qz
2
+ qw
2
Inverso: q
-1
= q* / N(q)
Identidade:
(0,0,0,1) - multiplicao
(0,0,0,0) adio
Outras operaes podem ser derivadas das operaes bsicas.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
quaternions operaes fundamentais
quaternions operaes fundamentais
32
Instituto de Computao - UFF
Um quatrnio q = (q
v
,q
w
) unitrio se n(q) = 1.

Pode-se escrever um quatrnio unitrio como


q = (sinu
q
, cos ) = sinu
q
+ cos
onde u
q
um vetor 3d tal que ||u
q
||=1

Quatrnios unitrios so perfeitamente apropriados


para representar rotaes e orientaes.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
quaternios unitrios
quaternios unitrios
33
Instituto de Computao - UFF

Pode ser provado que a rotao de um vetor v


por um quatrnio unitrio e dado por:
p = q p q* = q p q
-1
, onde p = (p
x
p
y
p
z
p
w
)
T

Dados dois quatrnios unitrios q e r. A


concatenao da aplicao de q sobre p
seguida de r dada por:
r (q p q*) r* = (r q) p (rq)* = c p c*
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
quaternions e rotaes
quaternions e rotaes
34
Instituto de Computao - UFF

O modo retained do Direct3D e o XNA suportam


quatrnio.

OpenGL no fornece suporte direto a quatrnio.

Como resultado necessrio converter orientaes


em quatrnio para outra forma de representao.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
quaternions e APIs grficas
quaternions e APIs grficas
35
Instituto de Computao - UFF

Tanto OpenGL quanto Direct3D fornecem modos de


se especificar orientaes via matrizes.

Logo, a converso quatrnio-matriz necessria.

Tal converso necessrio se for necessrio importar


orientaes de sistemas grficos que no adotam
quatrnio como o LightWave.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
quaternions e APIs grficas
quaternions e APIs grficas
36
Instituto de Computao - UFF

A converso da forma ngulo e eixo para quatrnio


simples.

Utiliza duas operaes trigonomtricas e operaes


de diviso e multiplicao.
q = [cos(Q/2), sin(Q/2)v] ,

onde Q um ngulo e v um eixo.


Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
converso
converso
ngulo e eixo -quaternio
ngulo e eixo -quaternio
37
Instituto de Computao - UFF

A converso de ngulos de Euler para quatrnio


segue um padro similar.

necessrio apenas ficar atento quanto a ordem.

Supondo a forma yaw, pitch e roll temos a seqncia


de quaternios:
q = q
yaw
qp
itch
q
roll
onde:
q
roll
= [cos (y/2), (sin(y/2), 0, 0)]
q
pitch
= [cos (q/2), (0, sin(q/2), 0)]
q
yaw
= [cos(f/2), (0, 0, sin(f/2)]
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
converso
converso
ngulos de Euler - quaternion
ngulos de Euler - quaternion
38
Instituto de Computao - UFF

Um quatrnio q pode ser convertido em uma matriz


Mq conforme a expresso abaixo:

Onde s = 2n(q). Para q unitrio M


q
reduz-se a
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
converso
converso
quaternio - matriz
quaternio - matriz

,
_

+ +
+ +
+ +

1 0 0 0
0 ) ( 1 ) ( ) (
0 ) ( ) ( 1 ) (
0 ) ( ) ( ) ( 1
2 2
2 2
2 2
y x x w z y y w z x
x w z y
z
x z w y x
y w z x z w y x z y
q
q q s q q q q s q q q q s
q q q q s q q s q q q q s
q q q q s q q q q s q q s
M

,
_

+ +
+ +
+ +

1 0 0 0
0 ) ( 1 ) ( 2 ) ( 2
0 ) ( 2 ) ( 2 1 ) ( 2
0 ) ( 2 ) ( 2 ) ( 2 1
2 2
2 2
2 2
y x x w z y y w z x
x w z y
z
x z w y x
y w z x z w y x z y
q
q q s q q q q q q q q
q q q q q q q q q q
q q q q q q q q q q
M
39
Instituto de Computao - UFF

A converso matriz-quatrnio requer um conjunto de


passos.

A chave para a converso surge das diferenas entre


elementos da matriz anterior:
Conhecendo-se q
w
, possvel determinar o quatrnio
q = (q
x
,q
y
,q
z
,q
w
)
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
converso
converso
matriz -quaternio
matriz -quaternio

,
_

+ +
+ +
+ +

1 0 0 0
0 ) ( 1 ) ( 2 ) ( 2
0 ) ( 2 ) ( 2 1 ) ( 2
0 ) ( 2 ) ( 2 ) ( 2 1
2 2
2 2
2 2
y x x w z y y w z x
x w z y
z
x z w y x
y w z x z w y x z y
q
q q s q q q q q q q q
q q q q q q q q q q
q q q q q q q q q q
M
z w
q q
y w
q q
x w
q q
q q m m
q q m m
q q m m
4
4
4
01 10
20 02
12 21



40
Instituto de Computao - UFF

O trao de M
q
dado pela soma dos elementos da
diagonal:

Com efeito, a converso para um quatrnio unitrio


dada por:
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
converso
converso
matriz -quatrnio
matriz -quatrnio
w
q q
x
q
m m
q
4
12 21

) (
4
1 4 ) ( 2 4 ) (
2
2 2 2 2
2 2 2
2 2 2
q n
q
q q q q
q q q
q q q s M tr
w
w z y x
z y x
z y x
q

,
_

+ + +
+ +
+ +
w
q q
y
q
m m
q
4
20 02

w
q q
z
q
m m
q
4
01 10

) (
2
1
q
w
M tr q
41
Instituto de Computao - UFF

A interpolao linear esfrica entre dois quatrnios q e


r, dado um parmetro t [0,1], calcula a interpolao
entre dois quatrnios atravs da seguinte expresso:
s(q,r,t)=(rq
-1
)
t
q

Implementaes em software utilizam a seguinte


frmula:

s(q,r,t)=slerp(q,r,t) =
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
interpolao de quaternios
interpolao de quaternios
r
t
q
t

sin
) sin(

sin
)) 1 ( sin(

42
Instituto de Computao - UFF

Translao Translao

glTranslate{fd}(TYPE x, TYPE y, TYPE z); glTranslate{fd}(TYPE x, TYPE y, TYPE z);

Rotao Rotao de de angle angle graus em torno de um eixo (x,y,z). graus em torno de um eixo (x,y,z).

glRotate{fd}(TYPE angle,TYPE x, TYPE y, TYPE z); glRotate{fd}(TYPE angle,TYPE x, TYPE y, TYPE z);

Escala Escala

glScale{fd}(TYPE sx, TYPE sy, TYPE sz); glScale{fd}(TYPE sx, TYPE sy, TYPE sz);
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
43
Instituto de Computao - UFF

Para transformarmos um certo objeto poligonal basta Para transformarmos um certo objeto poligonal basta
aplicar a matriz de transformao em cada um dos aplicar a matriz de transformao em cada um dos
seus vrtices. seus vrtices.

Por outro lado, no caso geral, Por outro lado, no caso geral, as normais destes as normais destes
objetos no seguem a mesma transformao objetos no seguem a mesma transformao. .

Exemplo: Exemplo:
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x x
y y
x x
y y
s s
x x
=0.5 =0.5
x x
y y
44
Instituto de Computao - UFF

Considere o plano com equao


Considere o plano com equao

Se incluirmos a matriz identidade


Se incluirmos a matriz identidade
I = M
I = M
-1 -1
M
M
no
no
alteramos a equao abaixo:
alteramos a equao abaixo:
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
[ ]
1
1
1
1
]
1


1
1
z
y
x
M M d c b a p n
T
[ ]
1
1
1
1
]
1

1
z
y
x
d c b a p n
T
45
Instituto de Computao - UFF

A equao do plano transformado


A equao do plano transformado
n.p=0
n.p=0

Logo, temos que a normal transformada


Logo, temos que a normal transformada


Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
[ ] 0
1
1

1
1
1
1
]
1

z
y
x
M d c b a
n M
d
c
b
a
M
d
c
b
a
n
T T

1
1
1
1
]
1

1
1
1
1
]
1


46
Instituto de Computao - UFF

O processo de instanciao de objeto permite a O processo de instanciao de objeto permite a


especificao de modelos complexos atravs de especificao de modelos complexos atravs de
modelos padro simples e transformaes modelos padro simples e transformaes
geomtricas geomtricas. .

fundamental para a descrio de fundamental para a descrio de objetos compostos objetos compostos
de vrias partes de vrias partes, principalmente quando h , principalmente quando h vnculo vnculo
entre as mesmas. entre as mesmas.

Devemos primeiramente esclarecer a questo de Devemos primeiramente esclarecer a questo de


ordem e interpretao ordem e interpretao das transformaes das transformaes
geomtricas compostas. geomtricas compostas.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
47
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x
y
z
1
1
1
brao
ante-brao
48
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x
y

,
_

y
x
p
R x
y

,
_

2
2
2
y
x
p
T
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
(a)
(b)
49
Instituto de Computao - UFF

s vezes difcil especificar transformaes


s vezes difcil especificar transformaes
geomtricas nos casos em que a existe
geomtricas nos casos em que a existe
dependncia
dependncia
entre a posio das partes
entre a posio das partes
de um
de um
objeto composto.
objeto composto.

Nestas situaes conveniente adotar uma


Nestas situaes conveniente adotar uma
outra interpretao geomtrica
outra interpretao geomtrica
para as
para as
transformaes compostas.
transformaes compostas.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
50
Instituto de Computao - UFF

Ao invs de considerarmos que as transformaes Ao invs de considerarmos que as transformaes


ocorrem nos objetos, ocorrem nos objetos, consideramos que elas ocorrem consideramos que elas ocorrem
em um sistema de eixos locais em um sistema de eixos locais que rodam e que rodam e
transladam. transladam.

A idia que os eixos locais inicialmente coincidem A idia que os eixos locais inicialmente coincidem
com o sistema de referncia global. com o sistema de referncia global.

A cada rotao e translao, A cada rotao e translao, um dado eixo local muda um dado eixo local muda
de posio e/ou orientao de posio e/ou orientao. .
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
51
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
p
2
= R T p
p
1
= T p e p
2
= R p
1

x
T R
y
x

,
_

y
x
p
x
y y

,
_

1
1
1
y
x
p

,
_

2
2
2
y
x
p
x
yL
x
y
xL
R
x,x
L
y,y
L
xL
yL
T
L
x
y
p
2
= T
L
R p , T
L
=RTR
-1
p
2
= R T R
-1
R p
p
2
= R T p
ou
p
2
52
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
53
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
y y
x x
z z
54
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
y y
x x
z z
x x
y y
z z
55
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
y y
x x
z z
x x
y y
1 1
x x
z z
1 1
= z = z
y= y y= y
x x
1 1
z z
56
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x x
2 2
y y
z z
2 2
x x
z z
y y
2 2
x x
y y
1 1
d d
1 1
x x
z z
1 1
= z = z
y= y y= y
x x
1 1
z z
57
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x x
2 2
y y
z z
2 2
x x
z z
y y
2 2
x x
4 4
y y
4 4
z z
4 4
x x
y y
1 1
x x
3 3
y y
3 3
z z
3 3
=z =z
2 2

x x
5 5
z z
5 5= =
z z
4 4

y y
4 4

d d
1 1
d d
2 2
x x
z z
1 1
= z = z
y= y y= y
x x
1 1
y y
2 2

x x
2 2

x x
4 4

y y
5 5
z z
Desenha a base (em xyz);
Translada em y;
Roda em y;
Roda em z;
Desenha o ombro (em x
1
y
1
z
1
)
Translada em y
1
de d
1
/2;
Desenha o ante-brao (em
x
2
y
2
z
2
);
Translada em y
2
de d
1
/2;
Roda em z
2

Desenha o cotovelo (em x


3
y
3
z
3
);
Translada em y
3
de d
2
/2;
Desenha o brao (em x
4
y
4
z
4
);
Translada em y
4
de d
2
/2;
Roda em z
4
;
Desenha o pulso (em x
5
y
5
z
5
);
Translada em y
5
Desenha a mo (em x
6
y
6
z
6
);
58
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
glMatrixMode(GL_MODELVIEW); /* transformaes do modelo */
glLoadIdentity( ); /* carrega a identidade como corrente */
desenhaBase( ); /* em xyz */
glTranslatef(0,d0,0.); /* translada em y */
glRotatef(angy0, 0.,1.,0.); /* roda em y */
glRotatef(angz0, 0.,0.,1.); /* roda em z */
desenhaOmbro( ); /* em x
1
y
1
z
1
*/
glTranslatef(0.,d1/2,0.); /* translada em y1 */
desenhaAnteBraco( ); /* em x
2
y
2
z
2
*/
glTranslatef(0.,d1/2,0.); /* translada em y2 */
glRotatef(angz1, 0.,0.,1.); /* roda em z2 */
desenhaCotovelo( ); /* em x
3
y
3
z
3
*/
glTranslatef(0.,d2/2,0.); /* translada em y3 */
desenhaBraco( ); /* em x
4
y
4
z
4
*/
glTranslatef(0.,d2/2,0.); /* translada em y4 */
glRotatef(rz5, 0.,0.,1.); /* roda em z4 */
desenhaPulso( ); /* em x
5
y
5
z
5
*/
glTranslatef(0.,d3,0.0); /* translada em y5 */
desenhaMao( ); /* em x
6
y
6
z
6
*/
59
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x x
2 2
y y
z z
2 2
x x
z z
y y
2 2
x x
4 4
y y
4 4
z z
4 4
x x
y y
1 1
x x
3 3
y y
3 3
z z
3 3
=z =z
2 2

x x
5 5
z z
5 5= =
z z
4 4

y y
4 4

d d
1 1
d d
2 2
x x
z z
1 1
= z = z
y= y y= y
x x
1 1
y y
2 2

x x
2 2

x x
4 4

y y
5 5
z z
base I
ombro T
y
R
y
R
z
ante-brao T
y
R
y
R
z
T
y1
cotovelo T
y
R
y
R
z
T
y1
T
y2
R
z2
brao T
y
R
y
R
z
T
y1
T
y2
R
z2
T
y3
pulso T
y
R
y
R
z
T
y1
T
y2
R
z2
T
y3
T
y4
R
z4
mo T
y
R
y
R
z
T
y1
T
y2
R
z2
T
y3
T
y4
R
z4
T
y5
60
Instituto de Computao - UFF

Sistemas como o OpenGL utilizam o conceito


Sistemas como o OpenGL utilizam o conceito
de
de
matriz corrente
matriz corrente
.
.

Desta forma, apenas uma matriz responsvel


Desta forma, apenas uma matriz responsvel
por realizar as transformaes geomtricas.
por realizar as transformaes geomtricas.

Esta matriz denominada


Esta matriz denominada
matriz de
matriz de
modelagem e visualizao
modelagem e visualizao
(
(
model view matrix
model view matrix
).
).
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
61
Instituto de Computao - UFF

Quando fornecemos uma nova matriz Quando fornecemos uma nova matriz M M, ela , ela
multiplicada pela esquerda pela matriz corrente multiplicada pela esquerda pela matriz corrente C C. Isto . Isto
C C
nova nova
= CM = CM. .

Geometricamente isto significa que Geometricamente isto significa que a transformao a transformao
descrita por descrita por M M ocorrer primeiro que a transformao ocorrer primeiro que a transformao
dada por dada por C C. .

Isto bastante conveniente para o esquema de Isto bastante conveniente para o esquema de
interpretao do processo de instanciao baseado interpretao do processo de instanciao baseado
em em eixos locais eixos locais. .
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
62
Instituto de Computao - UFF

Existem situaes em que o processo de instanciao Existem situaes em que o processo de instanciao
no descrito por uma seqncia de transformaes no descrito por uma seqncia de transformaes
com estrutura linear. com estrutura linear.

comum por exemplo, encontrarmos objetos que so comum por exemplo, encontrarmos objetos que so
descritos por descritos por seqncias de transformao seqncias de transformao
estruturadas em forma de rvore estruturadas em forma de rvore. .

Nestes casos definida uma Nestes casos definida uma hierarquia hierarquia sobre o sobre o
conjunto de transformaes e partes do objeto que conjunto de transformaes e partes do objeto que
especificam o modelo. especificam o modelo.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
63
Instituto de Computao - UFF

Nestes casos, ao trmino do percorrimento de


Nestes casos, ao trmino do percorrimento de
um dos ramos, necessrio
um dos ramos, necessrio
recuperar a
recuperar a
matriz
matriz
do n
do n
quando primeiro chegamos a ele.
quando primeiro chegamos a ele.

Por exemplo, podemos definir os dedos direito


Por exemplo, podemos definir os dedos direito
e esquerdo da mo de um rob a partir da
e esquerdo da mo de um rob a partir da
base da mo.
base da mo.
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
64
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x
5
y
5
y
6
y
7
y
8
y
9
x
6
x
7
x
8
x
9
a
b
c
d
e e f
a
palma
base dos dedos
dedo direito dedo esquerdo
65
Instituto de Computao - UFF

Sistemas como o OpenGL implementam uma Sistemas como o OpenGL implementam uma
estrutura de pilha para matrizes de transformao estrutura de pilha para matrizes de transformao. .

Desta forma, possvel percorrer a rvore saltando e Desta forma, possvel percorrer a rvore saltando e
recuperando as matrizes dos ns pai atravs de recuperando as matrizes dos ns pai atravs de
instrues instrues pop pop e e push push. .

Com o mecanismo de pilha, podemos garantir que Com o mecanismo de pilha, podemos garantir que
uma funo uma funo retorna sem alterar o estado corrente das retorna sem alterar o estado corrente das
transformaes transformaes. .
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
66
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL
OpenGL
x
5
y
5
y
6
y
7
y
8
y
9
x
6
x
7
x
8
x
9
a
b
c
d
e e f
a
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
*/
}
67
Instituto de Computao - UFF
Transformaes geomtricas no espao
Transformaes geomtricas no espao
:
:
Transformaes em
Transformaes em
OpenGL - exemplo
OpenGL - exemplo

You might also like