Vous êtes sur la page 1sur 38

Computao Grfica

Geometria de Transformaes

Parte II: Coordenadas


e Transformaes
Homogneas

Luiz M. G. Gonalves
Relaes espaciais
Representao em relao a um frame (sistema de coordenadas)
P (X,Y,Z)
Orientao
Orientao
Matriz de orientao
Propriedade elementar
(unitria)
Juntando orientao e posio
Coordenadas Homogneas
Coordenadas Homogneas
Translao no linear. Como representar em
forma de matriz?
Adiciona coordenada extra a cada vetor
P = (x, y, z, 1) ou P = X
Y
Z
1

Coordenada extra chamada de homognea


(ou w)
Transformao Homognea
Problema da translao
Translao no linear, precisa de um
truque para poder representar p/ matriz.
Adiciona zeros e 1 ltima linha da matriz

x 1 0 0 tx x
y = 0 1 0 ty y
z 0 0 1 tz z
1 0 0 0 1 1

Transformao denominada homognea


Juntar rotao e translao
Translao pura
Transformaes Homogneas
3D
So muito similar ao 2D
Coordenadas homogneas requerem
matrizes 4x4
Matrizes de translao e escala so:
Representao da rotao
Representao da rotaao mais complexa
Rotao 3D
Rotao um pouco mais complicado
Sistema de coordenadas de mo direita
ou esquerda afeta direo de rotao
Sistema de mo direita y

z x

Sistema de mo esquerda y z
x
ngulos de Euler para rotaes
3D
ngulos de Euler: 3 rotaes em torno de
cada eixo, porm:
Interpolao de ngulos para animao
produz movimentos bizarros
Rotaes dependem da ordem, e no
existem convenes para que ordem usar
Usado amplamente, devido simplicidade
Conhecidos como row, pitch, yaw
Roll (x), Pitch (y), Yaw (z)
Rotao em torno de cada eixo
Generalizao da Rotao
Rotao arbitrria
Dado um eixo ou direo (x,y,z) e um ngulo , a
matriz de rotao fica:

Y
- (Px,Py,Pz)
(Px,Py,Pz) (x,y,z)

X
Z
Exemplo de rotao +
translao
Exemplo: Seja o ponto BP = (3,7,0),
transforme-o no ponto AP rotacionando de
30 graus em torno de Z e transladando de
10 unidades ao longo de X e de 5
unidades ao longo de Y.
Exemplo: continuao
Problema da comutatividade

Translao seguida de rotao diferente de


rotao seguida de translao
Transformaes em cadeia
Seqncia de transformaes
Mesmo conjunto aplicado a vrios pontos
Combinar as matrizes desprezvel
Reduzir a seqncia numa nica matriz
Colapsando transformaes
Considere a seqncia p=ABCDp
Multiplicao no comutativa (ordem)
Multiplicao associativa
Da esquerda para a direita (pr-multiplicao)
Direita para a esquerda (ps-multiplicao)
ABCD = (((AB)C)D) = (A(B(CD)))
Troque cada matriz pelo produto do par
Colapsando transformaes
Mesmo resultado:
pr-multiplicao ps-multiplicao
Implementando seqncias
OpenGL: rotacionar do ngulo theta em
torno do eixo z, mas no ponto (x,y,0)
glLoadIdentity();
glTranslatef(x,y,0);
glRotatef(theta, 0,0,1);
glTranslatef(-x,-y,0);
Pense ao contrrio: ltima transformao
na cadeia glTranslatef(x,y,0), que foi a
transformao primeira aplicada ao ponto.
Conveno vetor-coluna
Transformao por matriz x vetor

A(B(C(D(x)))) = produto matriz-vetor dado


pela seqncia ABCDx
Conveno vetor-linha
Transformao por vetor x matriz

Todas as matrizes devem ser transpostas


Seqncia ABCDx transposta xtDtCtBtAt
OpenGL usa esta regra
Invertendo a transf. homognea
Quaternions
Entendidos como nmeros complexos no R3
q = a+bi+cj+dk
q = (s, v), onde s a parte real e v o vetor imaginrio

Facilita clculo de rotaes em torno de um eixo


eixo de rotao
q
cos , sin
2 2 ngulo de rotao

Rotao de ponto em torno de um eixo: q p q-1


p = (0 , r) - ponto na forma de quatrnio
q = (s,v) - quatrnio representando a rotao (ngulo e eixo)
Achando eixo e ngulo
Dada uma matriz R, achar eixo e ngulo de
z
rotao
=(x,y,z) o eixo de rotao

o ngulo de rotao

x
Os pontos p em cima do eixo de rotao so
os pontos fixos da matriz R, pois Rp = p:
Rp = p => Rp = Ip => (I-R)p = 0
Resolvendo (I-R)p=0, achamos um ponto
u=(u1,u2,u3) em cima do eixo de rotao
Achando eixo e ngulo
As coordenadas deste ponto so as
componentes da normal a um plano que
passa pela origem e perpendicular a ,
cuja equao geral :
u1x+u2y+u3z=0
Arbitrando valores para x e y (por exemplo
1 e 1), acha-se um valor para z,
encontrando um ponto (1,1,z) neste plano
(suponha p este ponto)
Achando eixo e ngulo
Aplicando a rotao neste ponto p, tem-se
ele transformado (rotacionado):
Rp = p
O eixo de rotao dado pelo produto
vetorial entre p e p:

O ngulo de rotao dado por:


acos-1( p.p / ||p||2 )

Vous aimerez peut-être aussi