610 likes | 842 Vues
Rotações e Quatérnios. Objetos compostos hierarquicamente. Hieraquia de movimentos. x’. y’. z’. 1. x’. y’. z’. 1. Transformações em 3D (translações e escalas). y. 1. 0. 0. t x. x. x. 0. 1. 0. t y. y. =. 0. 0. 1. t z. z. z. 0. 0. 0. 1. 1. s x. 0. 0. 0. x. 0.
E N D
x’ y’ z’ 1 x’ y’ z’ 1 Transformações em 3D(translações e escalas) y 1 0 0 tx x x 0 1 0 ty y = 0 0 1 tz z z 0 0 0 1 1 sx 0 0 0 x 0 sy 0 0 y = 0 0 sz 0 z 0 0 0 1 1
Rotação em torno do eixo y x y qy qy x z z
Rotação em torno do eixo x y x qx z
Rotação em torno do eixo z y x qz z
Rotações em torno dos eixos cartesianos y qy x qx qz z
braço y 1 ante-braço 1 x z 1 Instanciação de objetos
y T R x y x y y y T R x x x Ordem das transformações (a) (b)
p’ yL y y,yL y yL R TL xL xL x x x,xL x y y y T R x x x Composição com sistema local móvel p2 p p2= R T p p’= R p e p2 = TL p’ p2 = R T R-1 R p ou p1= Tpep2 = R p1 p2 = R T p
Instâncias de objetos d2 y3 y4 z3 z4 x3 y5 d1 x5 z5 x4 y2 z2 x6 x2 y y1 x1 z x z1
d2 y3 y4 z3 z4 x3 d1 y5 x5 z5 x4 y2 z2 x2 y y1 x1 z x z1 OpenGL:
d2 y3 y4 z3 z4 x3 d1 y5 x5 z5 x4 y2 z2 x2 y y1 x1 Desenha a base; Roda em y; Roda em z1; Translada em y1 de d1/2; Desenha o ante-braço; Translada em y2 de d1/2; Desenha cotovelo; Roda em z3; Translada em y3 de d2/2; Desenha o braço; Translada em y3 de d2/2; Desenha o pulso; Roda em z5; Desenha a mão; z x z1
Hierarquia em árvore base braço esquerdo braço direito
Hierarquia em árvore a x5 palma y5 x6 a y6 base dos dedos x7 b y7 x9 x8 c dedo esquerdo dedo direito y8 y9 e f e d
a x7 b y7 x9 x8 c y8 y9 f e e void desenhaDedos(float b,float c, float e, float f) { /* dedo esquerdo */ glPushMatrix(); /* Salva matriz corrente C0*/ glTranslatef((f+e)/2,(b+c)/2,0.); /* C=CTesq*/ glScalef(e,c,e); /* C=CS */ glutSolidCube(1.0); glPopMatrix(); /* Recupera da pilha C=C0*/ /* dedo direito */ glPushMatrix(); /* Salva matriz corrente C0*/ glTranslatef(-(f+e)/2,(b+c)/2,0.); /* C=CTdir*/ glScalef(e,c,e); /* C=CS */ glutSolidCube(1.0); glPopMatrix(); /* Recupera da pilha C=C0*/ }
Matriz de rotação em torno de um eixo ê que não passa pela origem z z p0 p0 y y x x z z M p0 p0 y y x x
90° + 90° Complexidade da Rotação Giroscópio
Yaw-Pitch-Roll x z y - yaw - pitch - roll
Parametrização de rotações: Ângulos de Euler z z z qz y y y qy qx x x x
Ângulos de EulerGimbal lock z z z qz y y y qy=90o qx x x x
Conjugado, normas eproduto 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 ânguloconstruímos o quatérnio unitário: Dado um ponto qualquer p doR3construímos o quatérnio: Calculamos o produto:
Composição de rotações seguida de
Interpolação de quatérnios não é unitário não representa rotação
Interpolação de quatérnios (1-t) t