Transformações Geométricas Coordenadas Homogêneas e Rotações
Motivação: representação de movimentos e formas
Objetos compostos hierarquicamente Hieraquia de movimentos Base Braço 1 Braço 2 Braço 3 Dedo Hieraquia de transformações
Transformações R 2 R 2 Exemplos: x y x´ y´ p´p´ = x y x y p =
Transformações lineares R 2 R 2 x y m 11 x´ y´ = m 21 m 22 m 12 Mostre que: 1 0 x y 0 1 m 11 m T = m 12 m T = T (0) = 0 A) B)
Transformações lineares: escala x y a = x y x´ y´ a´a´ = Redução (0< s x <1), Aumento (s y >1) c b x y i j
Transformações lineares: espelhamento x´ = -1x y´ = y x y x´ y´ p' = = p x y x y i j
Transformações lineares: rotação x´ y´ p' = x´ y´ r x´ = x.cos - y.sen y´ = x.sen + y.cos x y p = x y r rr
Transformações Lineares: matriz derivada pela geometria x y i j
Mudança de referêncial x y p = x y x y cos u v = sen cos -sen u v u v ou x y p = x´ y´ p' = x y x y uxux u v = vxvx vyvy uyuy Para montarmos a matriz que transforma as coordenadas de um refencial xy para um novo refencial uv basta escrevermos as linhas como sendo os unitários das direções. x y i j
Mudança de coordenadas entre sistemas rotacionados As coordenas de um ponto rodado de um ângulo em relação a um sistema são iguais as coordenadas do ponto original em relação a um sistema que sofre a rotação inversa. Como o novo sistema sofre a rotação inversa, a matriz de rotação é a inversa da matriz que levaria da base original para a este novo sistema. As colunas de uma matriz de uma rotação são as transformadas dos vetores da base e a transposta desta matriz é a sua inversa (rotação matriz ortonormal). Logo as linhas da matriz que escreve uma mudança entre bases ortonormais rodadas são as coordenadas do vetores da nova base em relação a base original.
Transformações lineares: cisalhamento (shear) Cisalhamento em x x x yy x y i j
Exemplo de aplicação do cisalhamento x y a b c plano de projeção m x y a' m' x y c' b' a' m'
Exemplo de aplicação do cisalhamento x y a x y c' b' a' m'
Decomposição Singular de Matrizes diagonal rotações
Exemplo: cisalhamento como composição de rotações e escala
Transformações Geométricas: Translação x y p p' txtx tyty t = x y = txtx tyty + = x y x y ? x´ y´ = ? ? ? x y 1 x´ y´ = txtx tyty + Não pode ser escrito na forma Ruim para implementação
Translação num plano do R 3 yhyh xhxh w w=1 x y t matriz de translação
Concatenação x y x0x0 y0y0 x y x y x y x0x0 y0y0
Concatenação xyx y x y xyx y x y T1T1 R1R1 E R2R2 T2T2 P= T 2 R 2 E R 1 T 1 P
Vantagens das coordenadas homogêneas (pontos no infinito) yhyh xhxh w w=1 x y 2 3 u = u uhuh = ? ? uhuh w h1h1 c1c1 h 2 = c 2 h3h3 c3c / / infinito na direção (2,3) infinito na direção (2,3) h1h1 h2h2 h3h3 h4h4 c1c1 c2c2 c3c3 c4c4
Reta no espaço projetivo yhyh xhxh w reta: ax+by+c=0 plano: ax+by+cw=0 plano: w=1
Reta paralelas no espaço projetivo yhyh xhxh w plano: ax+by+c 1 w=0 reta: ax+by+c 1 =0 reta: ax+by+c 2 =0 plano: ax+by+c 2 w=0 reta= ax+by =0 plano: w=1
Matriz da Homografia
[A] : Afim Obs: Se fosse um paralelograma a imagem do ponto 2 seria (1,1) T e não (α, ) T
[P] : Projetiva
[N] : Paralelograma para quadrado unitário
Transformações em 3D (translações e escalas) x y z txtx tyty tztz 1 y z 1 x = x y z x y z 1 0 sysy szsz y z 1 x = sxsx 0 0 0
Rotação em torno do eixo y x y z y z x y
Rotação em torno do eixo x x y z x
Rotação em torno do eixo z x y z z
Rotações em torno dos eixos cartesianos x y z x y z
Instanciação de objetos braço ante-braço x y z 1 1 1
Ordem das transformações x y R x y T x y R x y x y T (a) (b)
Composição com sistema local móvel x,x L y,y L xLxL yLyL TLTL x y p 2 = R T pp 1 = T p e p 2 = R p 1 x T R y xx yy p= R p e p 2 = T L p p 2 = R T p ou p2p2 x yLyL x y xLxL R p p p 2 = R T R -1 R p
Instâncias de objetos x2x2 y z2z2 xz y2y2 x4x4 y4y4 z4z4 x6x6 x1x1 y1y1 z1z1 x3x3 y3y3 z3z3 x5x5 z5z5 y5y5 d1d1 d2d2
x2x2 y z2z2 xz y2y2 x4x4 y4y4 z4z4 x1x1 y1y1 z1z1 x3x3 y3y3 z3z3 x5x5 z5z5 y5y5 d1d1 d2d2 baseI ante-braçoR y R z1 T y1 cotoveloR y R z1 T y1 T y2 braçoR y R z1 T y1 T y2 R z3 T y3 pulsoR y R z1 T y1 T y2 R z3 T y3 T y3 mãoR y R z1 T y1 T y2 R z3 T y3 T y3 R z5 OpenGL:
x2x2 y z2z2 xz y2y2 x4x4 y4y4 z4z4 x1x1 y1y1 z1z1 x3x3 y3y3 z3z3 x5x5 z5z5 y5y5 d1d1 d2d2 Desenha a base; Roda em y; Roda em z 1 ; Translada em y 1 de d 1 /2; Desenha o ante-braço; Translada em y 2 de d 1 /2; Desenha cotovelo; Roda em z 3 ; Translada em y 3 de d 2 /2; Desenha o braço; Translada em y 3 de d 2 /2; Desenha o pulso; Roda em z 5 ; Desenha a mão;
Hierarquia em árvore base braço direitobraço esquerdo
Hierarquia em árvore x5x5 y5y5 y6y6 y7y7 y8y8 y9y9 x6x6 x7x7 x8x8 x9x9 a b c d eef a palma base dos dedos dedo direitodedo esquerdo
y7y7 y8y8 y9y9 x7x7 x8x8 x9x9 a b c e ef void desenhaDedos(float b,float c, float e, 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 */ }
Algebra da rotação em torno de um eixo unitário ê x y z
Rotação em torno de um eixo ê x y z
A coluna da matriz é a transformada dos vetores da base
Matriz da rotação em torno de um eixo ê x y z
Matriz de rotação em torno de um eixo
Demonstração de:
Fórmula de Rodrigues 1
Fórmula de Rodrigues 2
Matriz de rotação em torno de um eixo ê que não passa pela origem x y z x y z p0p0 p0p0 x y z p0p0 M x y z p0p0
Interface para rotações tipo ArcBall
Rotação do ArcBall
Conservativo
Complexidade da Rotação 90° + 90° Giroscópio
Yaw-Pitch-Roll x z y - yaw - pitch - roll
Ângulos de Euler Transforma x-y-z em x-y-z em 3 passos Rotação yaw de em torno eixo z Rotação pitch de em torno do eixo Rotação de em torno do eixo
x z y
Parametrização de rotações: Ângulos de Euler x x y z y x y z z x y z
Ângulos de Euler Gimbal Lock
x x y z y =90 o x y z z x y z
Interpolação não gera posições entre
Quatérnios
Soma e multiplicação por escalar
Produto de dois quatérnios
Produto de dois quatérnios(cont.)
Conjugado, normas e produto interno conjugado de um quatérnio norma de um quatérnio produto interno de dois quatérnios norma euclidiana
Quatérnio inverso e unitário inverso de um quatérnio unitário de um quatérnio
Quatérnios e rotações Dada uma rotação definida por um eixo ê e um ângulo construímos o quatérnio unitário: Dado um ponto qualquer p do R 3 construímos o quatérnio: Calculamos o produto:
Demostração …
Composição de rotações seguida de
Composição de rotações
Exemplo
Interpolação de quatérnios não é unitário não representa rotação
Interpolação de quatérnios (1-t) t
Quatérnios e matrizes
Matrizes e quatérnios
Transformação de normais x y s x =0.5 x y x y
Vantagens das coordenadas homogêneas (pontos no infinito, exemplo) a b c d x y O a' b' c' d' x y O' infinito = = = = = = 2 1
FIM